0

Ich möchte die ID Token abrufen, dass ich es nach erfolgreicher Authentifizierung über eine GET/POST-Anfrage an eine andere Anwendung senden kann.ID-Token zur Weiterleitung an eine andere Anwendung erhalten

Szenario ist die folgende:

  • Mehrere Webanwendungen mit verschiedenen URLs (* .domain.com)
  • Alle Anwendungen müssen die Authentifizierung gegen Azure Active Directory
  • Zu viele URLs sie setzen alle als redirect_url (würde für jeden Hostnamen einen benötigen)
  • Idea ist eine "Login" -App (login.domain.com), die die Anmeldung übernimmt und dann den ID-Token an die * .domain.com-Anwendungen weiterleitet (URL in das Statusfeld)
  • * .domain.com dann überprüft die ID-Token und autorisiert Benutzer

Mit Microsoft.AspNetCore.Authentication.OpenIdConnect, ich kann nicht herausfinden, wie die ID-Token abzurufen, damit ich es richtig weiterleiten kann.

Ich habe die VS2015-Vorlage für ASP.NET-Core 1.0 Web Application und konfiguriere die Authentifizierung richtig (das funktioniert)

Jetzt muß ich das Token erhalte irgendwie, aber ich kann nicht herausfinden, wie verwendet.

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions() 
     { 
      ClientId = Configuration["Authentication:AzureAd:ClientId"], 
      Authority = Configuration["Authentication:AzureAd:AADInstance"] + "Common", 
      CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"], 

      TokenValidationParameters = new TokenValidationParameters 
      { 
       // Instead of using the default validation (validating against a single issuer value, as we do in line of business apps), 
       // we inject our own multitenant validation logic 
       ValidateIssuer = false, 

       // If the app is meant to be accessed by entire organizations, add your issuer validation logic here. 
       //IssuerValidator = (issuer, securityToken, validationParameters) => { 
       // if (myIssuerValidationLogic(issuer)) return issuer; 
       //} 
      }, 
      Events = new OpenIdConnectEvents 
      { 
       OnTicketReceived = (context) => 
       { 
        // If your authentication logic is based on users then add your logic here 
        return Task.FromResult(0); 

       }, 
       OnAuthenticationFailed = (context) => 
       { 
        context.Response.Redirect("/Home/Error"); 
        context.HandleResponse(); // Suppress the exception 
        return Task.FromResult(0); 
       }, 
       // If your application needs to do authenticate single users, add your user validation below. 
       //OnTokenValidated = (context) => 
       //{ 
       // return myUserValidationLogic(context.Ticket.Principal); 
       //} 
      } 
     }); 

Ich denke, ich sollte es in der Lage sein, sich in der OnTicketReceived Veranstaltung die TicketReceivedContext mit?

Antwort

1

Ich habe das falsche Ereignis verwendet. Im Ereignis OnTokenValidated erhalten Sie Zugriff auf context.SecurityToken.RawData, das ist das Roh-Token, das empfangen wird, und genau das ist, was ich brauche.

0

Sie können auch versuchen, diese:

string idToken = string.Empty; 
if (ctx.Properties.Items.ContainsKey(".Token.id_token")) 
{ 
    idToken = ctx.Properties.Items[".Token.id_token"]; 
} 
Verwandte Themen