Azure B2C에서 작동하는 MVC 6 .NET Core 웹 사이트를 만드는 데 시간을 들였습니다. 모든 것이 잘 작동하는 것 같습니다. 그러나 올바른 전략을 파악할 수없는 주장을 둘러싼 몇 가지 질문이 있습니다.Azure B2C/.NET 코어로 클레임 업데이트
사용자가 전자 메일, 이름, 성으로 내 사이트에 가입한다고 가정 해보십시오. 등록이 완료되면이 사용자를 참조하는 데이터베이스의 UserProfile 테이블에 레코드를 추가하고 싶습니다.
질문 1 : Azure B2C에서 "UserProfileId"클레임을 만들어야합니까? 또는 AD 사용자를 참조하는 데이터베이스 테이블에 "ObjectId"필드를 만들어야합니까? 무엇이 더 합리적인가?
질문 2 : 일단 사용자가 AD 사용자 클레임을 어디에 등록하면 어떻게 등록합니까? 나는이 사건 중 하나에서 그것을 할 것이냐? 아니면 다른 곳? 내가 확인할 수있는 "새로운 사용자"라는 주장이 있습니다.
OnAuthenticationValidated
OnAuthorizationCodeReceived
OnRedirectToAuthenticationEndpoint
질문 3 : Microsoft.Azure.ActiveDirectory.GraphClient을 : 내가 사용하는 것, 주장을 업데이트하려면? 누구든지 사용자 정의 클레임을 업데이트하는 방법에 대한 샘플 코드가 있습니까? 나는 이것을 시도했지만 지속되지 않는 것 같습니다 :
var identity = context.AuthenticationTicket.Principal.Identity as ClaimsIdentity;
identity?.AddClaim(new Claim("EmployeeId", "33"));
다음은 나의 인증 구성입니다. 감사!!!!!
public void ConfigureAuth(IApplicationBuilder app, IOptions<PolicySettings> policySettings, AuthenticationHelper authHelper)
{
app.UseCookieAuthentication(options =>
{
options.AutomaticAuthenticate = true;
options.AutomaticChallenge = true;
options.AccessDeniedPath = "/Home/Forbidden";
options.CookieSecure = CookieSecureOption.Always;
options.ExpireTimeSpan = TimeSpan.FromHours(1);
options.SlidingExpiration = true;
});
app.UseOpenIdConnectAuthentication(options =>
{
options.PostLogoutRedirectUri = policySettings.Value.PostLogoutRedirectUri;
options.AutomaticAuthenticate = true;
options.AutomaticChallenge = true;
options.ClientId = policySettings.Value.ClientId;
options.CallbackPath = new PathString("/signin-mysite");
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
options.ResponseType = OpenIdConnectResponseTypes.IdToken;
options.Authority = string.Format(CultureInfo.InvariantCulture, "{0}/{1}", policySettings.Value.AadInstance, policySettings.Value.Tenant);
options.Events = new OpenIdConnectEvents {
OnAuthenticationValidated = OnAuthenticationValidated,
OnAuthorizationCodeReceived = OnAuthorizationCodeReceived,
OnAuthenticationFailed = OnAuthenticationFailed,
OnRedirectToAuthenticationEndpoint = OnRedirectToAuthenticationEndpoint
};
options.ConfigurationManager = new PolicyConfigurationManager(
String.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}/{3}", policySettings.Value.AadInstance, policySettings.Value.Tenant, "v2.0", OpenIdProviderMetadataNames.Discovery),
new string[] { policySettings.Value.SignUpInPolicyId, policySettings.Value.ProfilePolicyId, policySettings.Value.PasswordPolicyId });
});
}