用户在asp.net mvc

时间:2016-05-20 13:05:15

标签: asp.net asp.net-mvc azure claims-based-identity

我刚刚把我的网站放在azure上,我在用户声明方面遇到了一些麻烦。

我想创建来自我的azure活动目录中特殊组的用户的特殊访问权限,当我在localhost上编写我的网站时,我就是这样做的:

public void ConfigureAuth(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseKentorOwinCookieSaver();
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                CookieSecure = CookieSecureOption.Always,
                ExpireTimeSpan = System.TimeSpan.FromMinutes(15),
                SlidingExpiration = true,
                CookieHttpOnly = true
            });

            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = clientId,
                    Authority = authority,
                    PostLogoutRedirectUri = postLogoutRedirectUri,

                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthorizationCodeReceived = context =>
                        {
                            if(context.AuthenticationTicket.Identity.Claims.Any(x => x.Type == "groups" && x.Value == "587642-sff4-f4c0-8085-ssdfe45d87ed"))
                            {
                                context.AuthenticationTicket.Identity.AddClaim(new Claim("roles","Admin"));
                            }
                            else
                            {
                                context.AuthenticationTicket.Identity.AddClaim(new Claim("roles", "User"));
                            }

                            return Task.FromResult(0);
                        }
                    }
                });
        } 

如果用户在群组中,他会获得“管理员”声明,如果不是,则获得“用户”。

在localhost上,它工作得很好但是现在我把它放在Azure上,它不再出现在“管理员”声明中了,只是给了用户声明......

有人能解释我问题的来源吗?

提前致谢!

编辑:我做了一些测试,看来应用程序没有在context.AuthenticationTicket.Identity.Claims

1 个答案:

答案 0 :(得分:0)

尝试注销您的声明,尤其是声明中包含的群组。否则:您是否可以访问多个AAD租户?当你进入云端时,也许你是错误的租户。