我有一个服务提供商的应用程序。是否可以使用OpenID Connect实现由Idp启动的SSO
对于Idp启动的SSO,似乎只能使用SAML,对吗?或者有没有办法让OpenID连接也能正常工作?我正在考虑使用一些开源工具,比如KeyClope或OneLogin toolkit等。。
非常感谢。
由于OpenIDConnect基于OAuth2,从技术上讲,IdP发起的SSO应该是可行的,但有一个条件——SP不依赖初始请求中传递给IdP的状态,该状态的作用类似于防伪令牌(即,在返回请求时,将返回状态与SP在初始请求中发送的状态进行比较)。
更长的答案是:
授权代码OAuth2流的第一步是SP重定向到IdP,IdP使用一次性代码重定向回来。state
参数通常由SP传递,SP希望状态被传回。
有两种情况。
SP验证状态(例如,将其与存储在临时cookie中的状态进行比较)。IdP SSO无法工作,因为IdP无法知道/伪造状态,因此无法向SP发出有效请求,该SP将充当IdP启动的SSO。
SP不会验证状态。然后,IdP可以对常规OAuth2请求发出响应,但不发送实际请求,即它重定向到
https://sp.com/oauth2?code=...authcode
SP从那里选择OAuth2握手,就好像是SP首先发起握手一样。
换句话说,IdP发起的SSO是否可行,只取决于SP。由于规范建议使用状态
来防止此类行为(在这里被归类为CSRF),我相信您在这里是独立的。另外,请阅读有关状态
参数可能存在的安全问题的更多信息。
3.1.2.1。身份验证请求[...]状态-推荐。不透明值,用于维护请求和回调之间的状态。通常,跨站请求伪造(CSRF,XSRF)缓解是通过将此参数的值与浏览器cookie加密绑定来实现的。
在当前形式的OpenID Connect中,安全IDP发起的SSO是不可能的。然而,有一个叫做第三方发起的SSO的功能,它允许通过第三方启动身份验证过程,但仍然首先访问RP。
以下是有关第三方发起的SSO的详细信息:
https://openid.net/specs/openid-connect-core-1_0.html#ThirdPartyInitiatedLogin
关于所描述的IDP init建议:行为良好的RP应通过使用状态
参数或(作为一种不太受欢迎且不太安全的解决方案)将请求状态保存在cookie中来防止这种情况发生,这使得RP仅在请求/响应往返过程中容易受到CSRF的攻击。
有一项正在进行的工作描述了——除其他事项外——如何通过使用签名消息以安全的方式扩展OpenID Connect来实现真正的IDP init SSO:https://datatracker.ietf.org/doc/html/draft-bradley-oauth-jwt-encoded-state#section-4.3
我已经配置了OpenAM IdP和SP。我正在纠结于IdP发起的SSO URL和SP发起的SSO URL。我使用以下格式的IdP发起的单点登录网址。但是我得到错误< code >服务提供商ID为空。 http://testtestidam.com:8080/openam/idpssoinit?metaAlias=/realm1/idp 任何人都可以帮忙吗?
如何从SAML响应中判断是SP启动的SSO还是IDP启动的SSO?是否有一个属性告诉我是谁发起了SSO? 例如,在这个StackOverflow问题中:SP发起的SSO和IDP发起的SSO之间的差异,他们讨论了差异,但没有谈论XML级别本身...... SAML响应如下所示:
我使用SPRING SAML实现并充当SP(例如:ALPHA)。我能够执行SP启动的SSO,并能够使用IDP对用户进行身份验证。此实现中没有问题。 但在我的应用程序中,我需要访问另一个与同一IDP链接的SP(例如:BETA)url。ALPHA和BETA服务提供商都受到同一IDP的信任。在这种情况下,在通过SP INIT SSO使用IDP对用户进行ALPHA身份验证后,当BETA SP URL发生重
目前,我们的identity server安装了Sustainsys/Saml2扩展,允许三方客户端通过sso登录到我们的产品,其中客户endpoint击我们的登录页面启动请求。 我们现在有一个客户,您希望在其自己的软件中添加链接以启动该过程,创建ldp启动的请求。 我的问题是如何使用identity server和Saml2AuthExtensions实现这一点。我已经看过了,我看不到任何额外的
Webapp #1 有一个指向 webapp #2 的按钮。当我们的用户单击该按钮时,他们应该被重定向到webapp #2,并自动登录。 集成是 SAML,因此 webapp #1(IDP)向 webapp #2(SP)发送 SAML“请求”,该请求返回重定向 URL,webapp #1 重定向到它。 SP给了我一个HTTP POST的URL,一个通过“电子邮件”属性识别用户的断言,所以我产生了这
我在使用SimplesamlPHP实现IdP发起的登录时遇到了麻烦。了解我必须从留档中做什么并不是最容易的事情。 我将用户重定向到IdP服务器,登录后,服务器向SP发送一个XML文件,其中包含电子邮件用户的地址、ID和其他数据。这看起来像是一次成功的登录,但是此时我不知道如何处理这个XML。我应该自己解析它还是使用simplesaml?我如何验证签名? 以下是我收到的XML: