Пропустить идентификационный экран IdentityServer3

Мы настроили приложение Client для использования аутентификации IdentityServer3 через протокол OpenID Connect (это приложение ASP.NET MVC, использующее промежуточное ПО OWIN для поддержки OIDC).

Сама IdentityServer3 настроена на использование как локального входа, так и внешнего входа (например, Azure AD).

В регулярном потоке, когда приложение должно аутентифицировать пользователя, он перенаправляет его на экран входа IdentityServer3 - это нормально. Но в некоторых случаях, по запросу, я хочу обойти экран входа в систему, так как позволяя IdentityServer3 знать, что пользователь хочет сразу же подключиться к определенному поставщику внешних идентификаторов.

Можно ли это сделать?

image

Ответы

Ответ 1

Просто нашел решение в IdentityServer3 Документация по авторизации/аутентификации конечной точки!

acr_values ​​(необязательно) позволяет передавать дополнительную аутентификацию информация к службе пользователя - есть также значения со специальными Значение: idp: name_of_idp обходит экран входа/дома и перенаправляет пользователя непосредственно выбранному поставщику удостоверений (если разрешено для каждой конфигурации клиента) арендатор: name_of_tenant может использоваться для передать имя арендатора в службу пользователя

Как передать дополнительные параметры с помощью промежуточного программного обеспечения OWIN OpenID Connect: https://katanaproject.codeplex.com/workitem/325

Вот пример запроса авторизации:

sample request

Ответ 2

Я знаю, что это уже давно, но я думал, что все-таки поставил бы это здесь, чтобы помочь кому-то, если они хотят автоматически перенаправить внешний вход:

public override Task PreAuthenticateAsync(PreAuthenticationContext context)
{
    context.SignInMessage.IdP = "windows";
    return base.PreAuthenticateAsync(context);  
}

В основном вы можете переопределить PreAuthenticateAsync на UserServiceBase и изменить свойство IdP на context.SignInMessage, чтобы быть именем внешних поставщиков, которое было настроено при запуске. И это перенаправит.