我几天前下载了WIF Extensions for SAML2,并一直在试验它们。下载中的示例使用WebForms应用程序,我试图弄清楚如何在MVC3中使用它们。
我目前能够使用以下版本对下载附带的示例身份提供程序进行身份验证:
Saml2AuthenticationModule.Current.SignIn(
"~/sign-on/saml2/success", "urn:samples:identityprovider");
我在"登录/ saml2 /成功"有一个行动方法。路由/ URL,当应用程序流到达时,Thread.CurrentPrincipal.Identity
确实是IClaimsIdentity
的实例。虽然Identity.IsAuthenticated
等于true,但Identity.Name
是一个空字符串。 (这在我们的应用程序中会出现问题,到目前为止,它已使用FormsAuthentication,并依赖于Identity.Name
来解析数据库中的用户帐户。)
我也看到此时有4个新的cookie:
此时我倾向于删除这4个cookie并使用声明NameIdentifier
在我们的应用程序中创建一个新帐户(除非已存在),然后使用FormsAuthentication为其编写.ASPXAUTH cookie用户。
我们将与之合并的第一个联盟会员使用Shibboleth,他们还没有实现SingleLogOut。所以我的假设是,当我们开始测试这种集成时,以下内容将无效:
Saml2AuthenticationModule.Current.SignOut("~/sign-off/saml2/success");
因此,手动删除4个cookie是我们能够将Identity.IsAuthenticated
恢复为假值的唯一方法。
我是否以不正确的方式解决这个问题?在IClaimsIdentity被消费并转移到FormsAuthentication之后是否有任何影响,我不考虑这个问题?