2016-11-02 7 views

答えて

0

最も簡単な方法は、SQL属性storeを設定してから、ストアをqueryというカスタムルールを作成することです。記事を1として

、のようなもの:

c:[type == "http://contoso.com/emailaddress"] 
=> issue (store = "Custom SQL Store", types = ("http://contoso.com/age", "http://contoso.com/purchasinglimit"), query = "SELECT age,purchasinglimit FROM users WHERE email={0}",param = c.value); 
0

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")); 

          } 
         } 
       }); 
関連する問題