2

我有 asp.net MVC 应用程序,我想进行 SSO Windows 身份验证。我使用 Ping Federate 作为 IdP 和 SP。当我进入该站点时,它会在我输入我的凭据后重定向到 SSO 页面,它会将 SAML 发布到 SP 并且 SP 重定向到该站点。

问题 我的应用程序无法识别用户已通过身份验证并重定向回已经对用户进行身份验证的 SSO 页面再次将 SAML 发布到 SP 并且存在无限循环。 我错过了什么?我需要更改 web.config 文件中的某些内容吗?

这就是我在 web.config 中的内容

<authentication mode="Windows">
</authentication>
<identity impersonate="true" /> 
4

2 回答 2

3

根据您在 SP 端使用的适配器类型,我建议您使用合适的套件。作为 OpenToken 工具包、无代理工具包等。

我之前也遇到过同样的问题,所以你必须做的是完成应用程序中的流程并在响应中写入一个 cookie。这取决于您使用的适配器,但结果是相同的。

如果您使用的是OpenToken 适配器,您必须通过查询字符串或表单帖子接收开放令牌。您必须使用 OpenToken 代理工具包打开该令牌。一旦你这样做了,你会在里面找到你的“属性”或“声明”,然后你必须在响应中写入一个 cookie,并使用该 cookie 来启动一个会话。

如果您使用的是无代理适配器,您将通过查询字符串或表单帖子接收 REF id。您必须获取该 REF id 并在 PingFederate 中调用 Pickup Endpoint。该调用将返回声明,然后您必须再次写入 cookie 并启动会话。

过去,我编写了一个 HTTPModule 来为我做这件事,并且我重新利用了 WS-Federation 功能来编写我的 cookie。最后,该站点将使用 Ping 进行身份验证,但读取 WIF cookie(如启用 WS-Federation 的应用程序)以保持会话继续进行。

但是,我们最终转向了 OpenIdConnect/OAuth2,这是一个更新的标准,不需要 SP 适配器。

我已经发布了一个 OWIN 客户端,只要你在 PingFederate 中启用了 OAuth2/OpenIdConnect 模块,它就会为你处理一切。

如果你搬家,这里是链接。 https://www.nuget.org/packages/Owin.Security.Providers.PingFederate

于 2015-05-02T18:33:22.820 回答
0

你可以试试asp.net saml sso 连接器。它支持多个 idp,例如 ADFS、Azure AD、Bitium、Centrify、G Suite、JBoss Keycloak、Okta、OneLogin、Salesforce、AWS Cognito,甚至可以使用您自己的自定义身份提供商。它对我的 .net sso 应用程序真的很有帮助。

于 2019-03-28T04:52:13.320 回答