切换到身份时的Azure ClaimsIdentity

时间:2015-09-08 04:44:00

标签: c# asp.net azure

我最近将ASP.NET应用程序从Azure的Active Directory配置切换到ASP.NET Identity。在本地测试时我没有遇到任何问题,但是当我发布到Azure时,我收到以下错误:

  

类型索赔   ' http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'   要么   ' http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider'   未提供的ClaimsIdentity。启用防伪   令牌支持与基于声明的身份验证,请验证   配置的索赔提供商正在提供这两项索赔   它生成的ClaimsIdentity实例。如果配置了声明   提供者使用不同的声明类型作为唯一标识符,   它可以通过设置静态属性来配置   AntiForgeryConfig.UniqueClaimTypeIdentifier。

就配置而言,我的Azure端是否应该更改一些内容?或者我的代码中还有其他我需要的东西吗?

1 个答案:

答案 0 :(得分:1)

如果您没有使用ACS作为STS,那么上述错误几乎可以告诉您解决问题所需的内容。

您需要告诉MVC您要使用哪种声明来唯一标识用户。您可以通过设置AntiForgeryConfig.UniqueClaimTypeIdentifier属性(通常在global.asax中的App_Start中)来执行此操作。例如(假设您要使用nameidentifier作为唯一声明):

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);

    AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
}