2016-08-09 65 views
3

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:

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.

+1

Wenn es ein B2C Mieter ist, haben Sie ausgewählt „E-Mails“ als eine der Anwendungs ​​Ansprüche im B2C-Admin-Portal? –

Antwort

0

Sie müssen die Ansprüche, die Sie an Ihre Anwendung senden möchten, in der Richtlinie im Feld "Anwendungsansprüche auswählen" angeben.

Die Klinge, wo Sie diese

ist

Azure AD B2C Einstellungen> Einstellungen> Sign-up oder Anmelderichtlinien konfigurieren> Anmeldung beansprucht

Sie sollten Sie haben email stellen Sie sicher, bekam ausgewählt wie im Screenshot unten.

Select application claims