首页 文章

切换到标识时的Azure ClaimsIdentity

提问于
浏览
0

我最近将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 回答

  • 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;
    }
    

相关问题