企业统一用户中心OAuth 2.0
Posted JFrog杰蛙DevOps
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业统一用户中心OAuth 2.0相关的知识,希望对你有一定的参考价值。
关注世界领先 DevOps 平台 JFrog
引言
企业各种管理系统平台或工具繁杂多样,企业一般会搭建统一用户中心以方便各个系统统一管理用户,而不是每个系统一套独立的用户,一般的方案是LDAP,OAuth,SAML,CAS 等统一用户管理系统。这里我们将以Artifactory 制品库管理平台为例介绍如果使用OAuth 协议及平台集成用户系统
Artifactory SSO集成介绍
从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项目
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. 如下图
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.如下图
4.访问OAuth server服务
您可以使用内置用户访问,用户名:user,密码:password。
第二步:Openid 添加授权应用app
在我们确认OpenID Connect Web应用程序已启动并正在运行之后,第二步是导航到“Home / Self-service Client Registration”,然后单击“New Client“
以添加Artifactory。如下图:
Client Name:任意字符串
Redirect URL:http://ip:8082/artifactory/api/oauth2/loginResponse
填写客户端(Artifactory)配置,然后单击“保存”。保存生成的信息非常重要,如下图:(稍后将在Artifactory中使用,请保存在文本中):
第三步:在Artifactory中使用OpenID Connect
要访问OAuth集成设置,请在管理模块中,选择安全性| OAuth SSO。
将OpenID Connect添加为新的提供程序
要添加新的提供程序,请单击“新建”。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中的设置示例:
单击保存,然后开始使用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 登录
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 服务端,并授权应用Artifactory访问其用户信息,范围为openid,profile,email等,一般授权有有效期,有效期内不需要重复登录,提高用户体验。
3. 回跳Artifactory,成功登录openid 当前登录用户
授权后会自动跳转回应用Artifactory 界面,并成功登录当前用户,如下图
调试:Artifactory SSO debug日志
如需调试,可以提高日志级别
修改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/
长按二维码关注
以上是关于企业统一用户中心OAuth 2.0的主要内容,如果未能解决你的问题,请参考以下文章
OAuth 2.0实现分布式认证授权-资源微服务实现用户鉴权拦截