如何动态构建 SAML 登录 link?

How do I build a SAML login link dynamically?

我想在我的登录页面上显示 link "Log in with [identity provider]"。对于 ssocircle,显然登录 link 是

https://idp.ssocircle.com/sso/idpssoinit?metaAlias=%2Fpublicidp

但是这个 link 不在用于配置它的 XML 中的任何位置。 IdP XML 包含以下内容:

<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://idp.ssocircle.com:443/sso/SSORedirect/metaAlias/publicidp"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://idp.ssocircle.com:443/sso/SSOPOST/metaAlias/publicidp"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://idp.ssocircle.com:443/sso/SSOSoap/metaAlias/publicidp"/>

是否无法从这些构建 URL?我是否需要为每个 IdP 添加配置,包括要求登录 URL 以及 XML?

很遗憾,您在 IDP 上调用的 URL 超出了 SAML 的范围。

SAML 只指定 IDP 可以自己启动身份验证,而不是什么触发它启动。这就是它不存在于元数据中的原因

对于您描述的用例,您应该使用服务提供商发起的 SSO。在这种情况下,将用于将 AuthnRequest 发送到的 URL 在您提到的元数据 XML 中定义。

但是您最终会在自己的应用程序中遇到一个必须生成正确的 AuthnRequest 的逻辑。但是那个URL在你的控制之下...

规范中的图片描述了 SP 发起的流程: