vlambda博客
学习文章列表

企业统一用户中心OAuth 2.0

关注世界领先 DevOps 平台 JFrog


引言

企业统一用户中心OAuth 2.0


企业各种管理系统平台或工具繁杂多样,企业一般会搭建统一用户中心以方便各个系统统一管理用户,而不是每个系统一套独立的用户,一般的方案是LDAP,OAuth,SAML,CAS 等统一用户管理系统。这里我们将以Artifactory 制品库管理平台为例介绍如果使用OAuth 协议及平台集成用户系统

 


Artifactory SSO集成介绍

企业统一用户中心OAuth 2.0
企业统一用户中心OAuth 2.0


从Artifactory 4.2版开始,Artifactory与OAuth集成在一起,允许您将身份验证请求委派给外部提供商,并允许用户使用其与这些提供商的帐户登录到Artifactory。
当前,支持的提供程序类型为Google,OpenID Connect,GitHub Enterprise和Cloud Foundry UAA。您可以根据需要定义任意数量的每种类型的提供程序。

对于此逐步指南,以将OpenID Connect OAuth 2.0与Artifactory进行集成设置,我们将使用开源项目MITREid Connect,该项目包含Spring平台上Java认证的OpenID Connect参考实现,包括运行中的服务器库,可部署的服务器包,客户端。(RP)库和通用实用程序库。该服务器可用作OpenID Connect身份提供程序以及通用OAuth 2.0授权服务器。


集成过程

企业统一用户中心OAuth 2.0
企业统一用户中心OAuth 2.0


第一步:本地构建OAuth项目


1.Git检出和初始化
使用普通的Git克隆命令检出项目:
$ git clone https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server.git

可以使用的通用Maven选项
要跳过单元测试,请添加以下选项:
$ mvn -DskipTests package

要跳过JavaDoc生成:
$ mvn -Dmaven.javadoc.skip = true package


2.使用Jetty 运行
可以使用Maven内部的嵌入式Jetty实例来部署服务器Webapp。
要部署到Jetty,首先通过从父项目目录运行此应用程序到本地Maven存储库中:

$ mvn clean install

要运行嵌入式Jetty服务器并部署服务器webapp,请从openid-connect-server-webapp目录运行以下命令(***重要提示:请勿从父项目目录运行此命令)。

$ mvn jetty:run-war


将localhost改为实际ip. 如下图


企业统一用户中心OAuth 2.0


3.使用Tomcat 部署运行
服务器webapp已通过Tomcat 6和Tomcat 7进行了测试。 
要将服务器部署到Tomcat(或类似的servlet容器),请将生成的.war文件复制到相应的Tomcat webapps目录,例如:

cp openid-connect-server-webapp/target/openid-connect-server.war /var/lib/tomcat6/webapps

将localhost改为实际ip.如下图


企业统一用户中心OAuth 2.0


4.访问OAuth server服务

您可以使用内置用户访问,用户名:user,密码:password。


第二步:Openid 添加授权应用app


在我们确认OpenID Connect Web应用程序已启动并正在运行之后,第二步是导航到“Home / Self-service Client Registration”,然后单击“New Client“

以添加Artifactory。如下图:


企业统一用户中心OAuth 2.0


Client Name:任意字符串

Redirect URL:http://ip:8082/artifactory/api/oauth2/loginResponse


企业统一用户中心OAuth 2.0

填写客户端(Artifactory)配置,然后单击“保存”。保存生成的信息非常重要,如下图:(稍后将在Artifactory中使用,请保存在文本中): 

企业统一用户中心OAuth 2.0


第三步:在Artifactory中使用OpenID Connect


要访问OAuth集成设置,请在管理模块中,选择安全性| OAuth SSO。


将OpenID Connect添加为新的提供程序


企业统一用户中心OAuth 2.0


要添加新的提供程序,请单击“新建”。Artifactory显示一个对话框,让您输入OAuth任务服务器的详细信息。

OpenID Connect支持Artifactory需要使用的以下端点:(ip为openid 服务的ip)

  • 验证网址:http://ip:8080/openid-connect-server-webapp/authorize

  • 令牌URL:http://ip:8080/openid-connect-server-webapp/token

  • API      URL:http://ip:8080/openid-connect-server-webapp/userinfo


Artifactory中的设置示例:


企业统一用户中心OAuth 2.0


单击保存,然后开始使用Artifactory和OAuth 2.0 OpenID Connect之间的集成


接口信息

userinfo接口实现:

https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/blob/master/openid-connect-server/src/main/java/org/mitre/openid/connect/web/UserInfoEndpoint.java


其中userinfo 结构体参考:

https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/blob/a2e8cb1a67a5546fdef11c604142a847e7c61261/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java


第四步:使用OAuth 方式登录Artifactory


1.   Artifactory登录界面 点击 openid sso 登录


企业统一用户中心OAuth 2.0


http://182.92.214.141:8080/openid-connect-server-webapp/authorize?client_id=6492ac73-b044-488d-97b0-124a81d6fea9&scope=openid%20profile%20email&redirect_uri=http://182.92.214.141:8082/artifactory/api/oauth2/loginResponse&state=-2483714039574086174~&response_type=code&approval_prompt=auto


2. Openid 服务信任登录


企业统一用户中心OAuth 2.0


此步骤当前用户需先登录OAuth 服务端,并授权应用Artifactory访问其用户信息,范围为openid,profile,email等,一般授权有有效期,有效期内不需要重复登录,提高用户体验。



3. 回跳Artifactory,成功登录openid 当前登录用户


授权后会自动跳转回应用Artifactory 界面,并成功登录当前用户,如下图


企业统一用户中心OAuth 2.0


调试:Artifactory SSO debug日志

企业统一用户中心OAuth 2.0


如需调试,可以提高日志级别

修改artifactory安装目录/var/etc/artifactory/logback.xml

修改或添加如下日志信息

<logger name="org.artifactory.addon.sso.oauth">
   <level value="debug"/>
</logger>


无需重启,再次使用openid 方式登录,查看日志

Artifactory安装目录/var/log/artifactory-service.log



END


下载JFrog Artifactory企业版(免费试用):https://www.jfrogchina.com/artifactory/free-trial/


下载JFrog Artifactory 开源版(代替 Nexus):

http://www.jfrogchina.com/open-source/


下载JFrog JCR 免费版:

https://jfrog.com/container-registry/



长按二维码关注