14

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

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

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

Это возможно?

image

+0

Я выяснил, что если клиент ограничивается одним IdP, тогда экран входа в систему автоматически пропускается, но в случае множественного IdP (например, локального входа и Azure AD) вопрос остается открытым –

+0

Существует пример того, как использовать функцию HRD [здесь] (https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/CustomHrd). Может быть, это поможет вам. – pepo

+0

@pepo, спасибо, я обязательно посмотрю! Насколько я понимаю «промежуточное ПО OWIN» по умолчанию для OpenID Connect не может передать какую-либо дополнительную информацию об ошибке аутентификации - https://github.com/aspnet/Security/issues/99. Таким образом, не только Identity Server должен поддерживать получение информации о намерениях пользователя, но промежуточное ПО OWIN должно отправлять его, и оно не может быть готовым, верно? –

ответ

15

Просто найти решение в IdentityServer3's Authorization/Authentication Endpoint documentation!

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

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

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

sample request

+1

Это хороший улов. – PyroJoke

+0

@PyroJoke, рад, что ты сочтешь это полезным, Дима :) –

5

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^