三方系统集成SF(SuccessFactors),实现单点登录要点

在笔者先前的文章——《基于saml2.0的平台(适用多种平台)单点登录配置,以okta为例》中,详细介绍了如何把一个自开发的三方系统,集成到okta或者IAS平台。

经过笔者的实际工作经验,发现SF自己本身其实也可以作为一个单点登录平台来使用。

具体场景:

自开发的三方系统(JAVA)需要和SF系统进行单点登录集成,在前面的文章中,我们为了和SF系统集成,是通过外部的单点登录平台IAS来实现的,在这里其实是可以一步到位直接和SF进行集成的。

因为SF自身也是一个产品,它也提供了类似于单点登录平台的作用,所以可以不需要IAS平台,直接在SF自身的平台配置单点登录。

解决方法:

下面介绍下具体的方法。

SF的单点登录配置特别简单,首先登录SF专用的配置网址。

再进入特定的配置界面:

三方系统集成SF(SuccessFactors),实现单点登录要点_第1张图片

第一步:这里的重点就是截图中文字描述的,首先下载idp认证服务器的xml,其实就是认证服务器的公钥证书,下载到自开发服务器后,以后的单点登录认证就通过这个idp来完成。

第二步:配置SSO参数,可以参考上一篇文章,基本保持一致,这里不需要把自开发服务生成的metadata.xml文件上传到这里单点配置。

SF单点登录与IAS平台级配置区别:

上面介绍的都是很简单的配置,只要详细的看完了上一篇文章,这个配置就没问题。

这里重点说一下SF单点登录和IAS单点登录配置的不同之处。

最大的不同在于,当在自开发项目中,当调用单点登录接口/saml/login成功后会通过浏览器自动跳转到/saml/SSO。问题的关键在于请求的域名和http方式,如果是IAS平台集成,会跳转到IAS平台自己配置好了前缀的/saml/SSO接口,比如https://ias.idp.com/saml/SSO。

但是如果是SF的单点登录配置,它不会自动的按照SF平台配置的/saml/SSO链接调用,它只会根据当前自开发服务器的ip地址来自动跳转比如:http://10.10.10.10:80/saml/SSO。

在平时的开发中,其实都好说,主要是当需要生产上线的情况,需要通过域名和证书访问。

这时候SF却不能够像IAS一样,只要在SSO配置的地方配置好就行,只能通过代码的形式来实现把本机ip替换成指定的域名和端口。

这里的解决方法是通过Nginx请求头配置和Tomcat的流程引擎——RemoteIpValve来控制,在tomcat执行请求的过程中,把本地ip替换成指定的域名。

关于tomcat的RemoteIpValve流程引擎原理,也有一篇专门的文章讲解,有兴趣可以去看看。

 下面说下具体的解决办法:

Nginx配置:

 

location / {
           #请求使用https
           proxy_set_header X-Forwarded-Proto https;
           #本机ip替换为指定域名
           proxy_set_header X-Forwarded-Host test.baidu.com;
           #使用指定的端口
           proxy_set_header X-Forwarded-Port 8082;
           proxy_pass http://10.10.10.10:8090;
        }

Tomcat配置:

server:
  tomcat:
    remoteip:
      protocol-header: X-Forwarded-Proto
      protocol-header-https-value: https

就这样,通过Nginx在请求头配置一系列指定的参数,可以把tomcat接收到的请求http://10.10.10.10:80/saml/SSO,直接动态转换为https://test.baidu.com:8082/saml/SSO。

这样就直接解决了在SF单点登录之初,从saml/login无法转向我们需要的saml/SSO请求的问题。

你可能感兴趣的:(SF单点登录集成,服务器,运维)