根据您在 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