Я хотел бы получить ID Token
, который я могу отправить через запрос GET/POST другому приложению после успешной аутентификации.Получить идентификатор ID для отправки другому приложению
Сценарий следующие:
- Несколько веб-приложений, использующих разные адреса (* .domain.com)
- Все приложения требуют аутентификации против Azure Active Directory
- Слишком много URL, чтобы поместить их всех, как redirect_url (понадобится один для каждого имени хоста)
- Идея состоит в том, чтобы иметь приложение «login» (login.domain.com), которое обрабатывает логин, а затем пересылает токен идентификатора в приложения * .domain.com (используя URL-адрес в поле состояния)
- * .domain.com затем проверяет идентификатор токена и разрешает пользователям
Использование Microsoft.AspNetCore.Authentication.OpenIdConnect, я не могу понять, как получить идентификатор токена, чтобы я мог направить его должным образом.
Я использовал VS2015 шаблон для ASP.NET ядра 1.0 веб-приложения и настройки проверки подлинности должным образом (это работает)
Теперь мне нужно получить токен как-то, но я не могу понять, каким образом.
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);
//}
}
});
Я предполагаю, что я должен быть в состоянии получить его в OnTicketReceived
случае с помощью TicketReceivedContext
?