目录
第一步:注册okta账号
第二步:配置okta应用信息
第三步:下载Idp.xml文件
第四步:okta特定配置
第五步:集成测试
基于SuccessFactors的单点登录实现
Github工程代码链接
小结
笔者以前写过一篇关于saml2.0单点登录的文章,但是大多偏于理论和概念性的描述,有很多同学对具体如何实现okta的单点登录问题仍然不是很明了,遂有了这篇完全步骤详细的完全实战文章,希望对大家有所帮助。
具体步骤如下:
注册一个okta账号——注册链接。详细内容就不赘述了,跟着文档一步步走就行。
创建账号成功后,进入okta平台。
创建集成应用——点击Create App Integration
选择saml2.0
App命名
配置App基础信息:
其中entityId从项目的yml配置文件取,RelayState为成功登录后默认的重定向地址。
点击Show Advanced Settings配置高级信息,主要是上传项目的公钥文件:
公钥文件位于项目resource文件夹下的localhost.cert文件,选择上传后如上图所示。
注意公私密钥是可以自己生成的,不一定需要使用项目提供的。
配置完成后,点击最下面的Next,进入下一页。
选择I'm a software vendor. I'd like to integrate my app with Okta选项,点击Finish结束配置。
结束配置后,点击Applications,选择我们刚才创建的应用sso-saml2.0-test
进入后选择Sign On 的Tab页
鼠标下滑到最下面,选择Active状态的Idp配置文件
点击View IdP metadata
复制网页的所有信息,粘贴到项目resource目录下的idp-okta.xml配置中。
格式化后显示大致如下:
最后,还需要给应用程序分配用户,不然会出现报错
选择App配置的Assignments页面,选择Assign to People 或者 Assign to Groups:
可以自定义用户名
配置成功后如下所示:
配置完成以后启动项目,访问localhost:8080,或者通过http://localhost:8080/saml/login?RelayState=/home,来访问,成功后跳转如下
SAP的SF系列产品登录和okta平台的单点登录几乎没有区别,工程代码可以不需要改,仅仅是需要稍微的调整一下配置文件就可以无缝的完成替换,由于涉及到工作信息,仅展示大概的示例:
这里额外说一下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平台的配置最为详细,笔者已经实现过SAP的IAS平台和SF平台的saml2.0单点登录。工程代码主要来自Gitee,但是笔者对其进行了代码简化和进一步的优化,主要通过url后置参数,实现了登录成功后,可以跳转到自定义页面的功能。
其难点在于单点登录实现过程中,由于前端浏览器的url的多次跳转,导致登录成功后可能只能进入指定的/home页面,笔者利用saml2.0的RelayState参数,通过url后置参数——?RelayState=/home的形式,实现了单点登录成功后可以跳转到任意页面的功能。
希望对大家有所帮助。