【发布时间】:2020-07-21 15:29:08
【问题描述】:
我在 azure K100User 和 K100Admin 中有两个 AD 组。下面的代码运行良好,但此代码不适用于超过 200 个 AD 组的用户。
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string aadInstance = EnsureTrailingSlash(ConfigurationManager.AppSettings["ida:AADInstance"]);
private static string tenantId = ConfigurationManager.AppSettings["ida:TenantId"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
private static string authority = aadInstance + tenantId;
private static string k100User = ConfigurationManager.AppSettings["K100User"];
private static string k100Admin = ConfigurationManager.AppSettings["K100Admin"];
public void ConfigureAuth(IAppBuilder app)
{
ClaimsIdentity claimsIdentity1 = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = true
},
Notifications = new OpenIdConnectAuthenticationNotifications
{
SecurityTokenValidated = (ctx) =>
{
ClaimsIdentity claimsIdentity = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
var claims = ctx.AuthenticationTicket.Identity.FindAll("groups");
var appRoles = new List<Claim>();
foreach (var item in claims)
{
var groupStringValue = item.Value;
if (groupStringValue == k100Admin)
{
appRoles.Add(new Claim(ClaimTypes.Role, "K100Admin", ClaimValueTypes.String));
}
else if (groupStringValue == k100User)
{
appRoles.Add(new Claim(ClaimTypes.Role, "K100User", ClaimValueTypes.String));
}
}
if (appRoles.Count > 0)
{
ctx.AuthenticationTicket.Identity.AddClaim(appRoles[0]);
}
return Task.FromResult(0);
}
}
});
}
【问题讨论】:
-
您确定您没有获得某些 Azure AD 服务限制和限制吗? docs.microsoft.com/en-gb/azure/active-directory/…
-
顺便说一句。该代码的主要目标是什么?
-
@LukeDuda 请帮我修改此代码,它不适用于超过 200 个 AD 组的用户
标签: oauth-2.0 azure-active-directory microsoft-graph-api openid-connect