SituationE-Mail Überprüfen Sie vor der Verwendung Azure B2C Auth Service Authentifizierung
Ich möchte Azure B2C Auth Service für meine Web-Anwendung verwenden. Ich möchte jedoch, dass die Administratoren der App den Zugriff auf bestimmte E-Mails oder Domains beschränken, z. wie folgt ein Whitelist:
- [email protected]
- [email protected]
- *@alphabet.com
Also nur die oberen zwei E-Mails und alle anderen, mit einer E-Mail ending in "alphabet.com" kann auf die Seite zugreifen.
Problem
Ich habe alles umgesetzt und es korrekt funktioniert, aber ich kämpfen, um die E-Mail-Adresse des authentifizierten Benutzer erhalten die Weiße Liste Kontrolle während des signon/signin Prozess zu tun. Das AuthenticationTicket hat alle angeforderten Ansprüche (Vorname, Nachname, Name, Objektkennung usw.), aber die E-Mail ist nicht vorhanden (sie wurde in Azure B2C als Anspruch eingerichtet).
Wie kann ich auf die E-Mail zugreifen und ist dies der richtige Ort für die Überprüfung?
-Code in Startup.App.cs
private OpenIdConnectAuthenticationOptions CreateOptionsFromPolicy(string policy)
{
return new OpenIdConnectAuthenticationOptions
{
// For each policy, give OWIN the policy-specific metadata address, and
// set the authentication type to the id of the policy
MetadataAddress = String.Format(aadInstance, tenant, policy),
AuthenticationType = policy,
// These are standard OpenID Connect parameters, with values pulled from web.config
ClientId = clientId,
RedirectUri = redirectUri,
PostLogoutRedirectUri = redirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = AuthenticationFailed,
AuthorizationCodeReceived = (context) =>
{
// no claims present here
return Task.FromResult(0);
},
SecurityTokenReceived = (context) =>
{
// no claims present here
return Task.FromResult(0);
},
SecurityTokenValidated = (context) =>
{
// print all claims - quite a few except email :(Is this where this check should be done?
foreach (var claim in context.AuthenticationTicket.Identity.Claims)
{
Console.WriteLine(claim.Value);
}
return Task.FromResult(0);
},
},
Scope = "openid",
ResponseType = "id_token",
// This piece is optional - it is used for displaying the user's name in the navigation bar.
TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name"
},
};
}
Jede Hilfe sehr geschätzt.
Wenn es ein B2C Mieter ist, haben Sie ausgewählt „E-Mails“ als eine der Anwendungs Ansprüche im B2C-Admin-Portal? –