从 Azure ACS 返回时,我在 FormCollection 中检索联合身份验证结果。包含我需要的信息的值位于一个名为“wresult”的加密值中。我在解密此值以将其用于进一步身份验证时遇到问题。
我不想使用 WSFederationAuthenticationModule 因为我没有授权设置 cookie。使用该模块时,它会自动将 auth-cookies 设置为 Federated-Authenticationtype。
相反,我想检索 wresult 中包含的声明,然后设置我自己的安全令牌(无论是 JWT、SAML 2.0 还是其他)。
到目前为止,我发现的唯一可能的解决方法是使用 FAModule,然后立即删除会话令牌 cookie。但这将导致 auth-cookie 在响应中设置两次,并立即取消设置该值。
我最终想要实现的是:提供使用表单站点进行身份验证或使用 Azure ACS 中的任何身份提供程序进行身份验证的可能性。使用表单身份验证,我可以立即比较用户名和密码,并将安全令牌设置为我希望它拥有的任何声明。但是在使用 Azure ACS 时,我想先将检索名称标识符与数据库中保存的值进行比较,然后设置我的自定义安全令牌,而不是 WS 联合安全令牌。或者,如果 nameidentifier 未知,我想重定向到表单页面,用户可以使用他的凭据验证这个 nameidentifier。我不希望将 azure ACS 返回的值计算为经过身份验证。