2016-11-02 68 views

回答

0

最簡單的方法是設置一個SQL屬性store,然後將自定義規則寫入query商店。

按照文章,是這樣的:

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

          } 
         } 
       }); 
相關問題