0

인증 성공 후 다른 응용 프로그램에 GET/POST 요청을 통해 보낼 수있는 ID Token을 가져오고 싶습니다. 다른 URL을 사용다른 응용 프로그램으로 전달할 ID 토큰 가져 오기

  • 여러 웹 응용 프로그램 (* .domain.com에)를
  • 모든 응용 프로그램으로 모두 넣어
  • 너무 많은 URL의 푸른 Active Directory에 대한 인증이 필요합니다

    시나리오는 다음과 redirect_url (모든 호스트 이름에 하나씩 필요함)

  • 아이디어는 로그인을 처리하고 ID 토큰을 * .domain.com 응용 프로그램에 전달하는 "login"응용 프로그램 (login.domain.com)을 갖는 것입니다 (in 상태 필드)
  • ,
  • 은 * .domain.com에이 다음 ID 토큰을 확인하고 Microsoft.AspNetCore.Authentication.OpenIdConnect를 사용하여 사용자

권한을 부여, 나는 제대로 전달할 수 있도록 ID 토큰을 검색하는 방법을 알아낼 수 없습니다.

나는 ASP.NET 코어 1.0 웹 응용 프로그램을위한 VS2015 템플릿을 사용하고 적절하게 인증을 구성 (이 작품)

지금 어떻게 든 토큰을 얻을 필요,하지만 난 방법을 알아낼 수 없습니다했습니다.

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); 
       //} 
      } 
     }); 

나는 내가 TicketReceivedContext를 사용하여 OnTicketReceived 경우에 그것을 얻을 수있을 것 같아요?

답변

1

잘못된 이벤트를 사용하고있었습니다. OnTokenValidated 이벤트에서 수신 된 원시 토큰 인 context.SecurityToken.RawData에 액세스 할 수 있으며 필요한 정확하게 일치합니다.

0

당신이 시도 할 수 있습니다 :

string idToken = string.Empty; 
if (ctx.Properties.Items.ContainsKey(".Token.id_token")) 
{ 
    idToken = ctx.Properties.Items[".Token.id_token"]; 
} 
관련 문제