0
我们有一个使用adfs(ws-federation)身份验证设置的mvc 5项目。现在,如果数据库中的标志为真,我们想向用户添加一个自定义声明。哪里可以做到这一点?Asp.net mvc 5;在哪里添加自定义声明? (adfs登录)
我们有一个使用adfs(ws-federation)身份验证设置的mvc 5项目。现在,如果数据库中的标志为真,我们想向用户添加一个自定义声明。哪里可以做到这一点?Asp.net mvc 5;在哪里添加自定义声明? (adfs登录)
This博客条目让我们在正确的方向。索赔需要在用户验证后的最后一分钟注入。
Startup.Auth.cs应该是这个样子:
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
TokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
//NameClaimType = "User-Principal-Name",
//SaveSigninToken = true
},
//Inject custom claims from Database
Provider = new OAuthBearerAuthenticationProvider()
{
OnValidateIdentity = async context =>
{
string UPN = context.Ticket.Identity.FindFirst(ClaimTypes.Upn).Value;
UPN = UPN.Remove(UPN.Length - 12);
User user = new User();
//user = GetUserData("[email protected]");
user = GetUserData(UPN); //Get user data from your DB
context.Ticket.Identity.AddClaim(
new Claim("UserName", user.UserName.ToString(), ClaimValueTypes.String, "LOCAL AUTHORITY"));
}
}
});