okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)

目录

第一步:注册okta账号

第二步:配置okta应用信息

第三步:下载Idp.xml文件

第四步:okta特定配置

第五步:集成测试

基于SuccessFactors的单点登录实现

Github工程代码链接

小结


笔者以前写过一篇关于saml2.0单点登录的文章,但是大多偏于理论和概念性的描述,有很多同学对具体如何实现okta的单点登录问题仍然不是很明了,遂有了这篇完全步骤详细的完全实战文章,希望对大家有所帮助。

具体步骤如下:

第一步:注册okta账号

注册一个okta账号——注册链接。详细内容就不赘述了,跟着文档一步步走就行。

第二步:配置okta应用信息

创建账号成功后,进入okta平台。

创建集成应用——点击Create App Integration

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第1张图片

选择saml2.0

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第2张图片

App命名

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第3张图片

 

配置App基础信息:

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第4张图片

 

其中entityId从项目的yml配置文件取,RelayState为成功登录后默认的重定向地址。

点击Show Advanced Settings配置高级信息,主要是上传项目的公钥文件:

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第5张图片

 

公钥文件位于项目resource文件夹下的localhost.cert文件,选择上传后如上图所示。

注意公私密钥是可以自己生成的,不一定需要使用项目提供的。

配置完成后,点击最下面的Next,进入下一页。

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第6张图片

 

选择I'm a software vendor. I'd like to integrate my app with Okta选项,点击Finish结束配置。

第三步:下载Idp.xml文件

结束配置后,点击Applications,选择我们刚才创建的应用sso-saml2.0-test

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第7张图片

 

进入后选择Sign On 的Tab页

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第8张图片

 

鼠标下滑到最下面,选择Active状态的Idp配置文件

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第9张图片

 

点击View IdP metadata

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第10张图片

 

复制网页的所有信息,粘贴到项目resource目录下的idp-okta.xml配置中。

格式化后显示大致如下:

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第11张图片

第四步:okta特定配置

最后,还需要给应用程序分配用户,不然会出现报错

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第12张图片

 

选择App配置的Assignments页面,选择Assign to People 或者 Assign to Groups:

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第13张图片

 

可以自定义用户名

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第14张图片

 

配置成功后如下所示:

 okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第15张图片

第五步:集成测试

配置完成以后启动项目,访问localhost:8080,或者通过http://localhost:8080/saml/login?RelayState=/home,来访问,成功后跳转如下

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第16张图片

 

基于SuccessFactors的单点登录实现

SAP的SF系列产品登录和okta平台的单点登录几乎没有区别,工程代码可以不需要改,仅仅是需要稍微的调整一下配置文件就可以无缝的完成替换,由于涉及到工作信息,仅展示大概的示例:

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第17张图片

 

这里额外说一下idp.xml和localhost.cert,idp.xml可以去sf的provisioning网站下载(Download SuccessFactors IdP metadata with SHA-256 Certificate),下载后直接是一个xml文件,内容全部粘贴到idp.xml即可,在对应的页面,可以配置对应的entityId和回调App的url。

localhost.cert则可以自己用RSA工具生成配套的公私钥。

可以看到,okta和sf唯一的区别的就是两个红框的配置不同,代码不用调整。

其登陆后实际效果如下:

okta/sf平台实现saml2.0单点登录集成实战(详细步骤+完整代码)_第18张图片

 

Github工程代码链接

小结

工程代码和实际步骤都已经给出,其中以okta平台的配置最为详细,笔者已经实现过SAP的IAS平台和SF平台的saml2.0单点登录。工程代码主要来自Gitee,但是笔者对其进行了代码简化和进一步的优化,主要通过url后置参数,实现了登录成功后,可以跳转到自定义页面的功能。

其难点在于单点登录实现过程中,由于前端浏览器的url的多次跳转,导致登录成功后可能只能进入指定的/home页面,笔者利用saml2.0的RelayState参数,通过url后置参数——?RelayState=/home的形式,实现了单点登录成功后可以跳转到任意页面的功能。

希望对大家有所帮助。

你可能感兴趣的:(java,springboot)