2017-02-01 2 views
9

Я изучаю использование Identity Server 4 для аутентификации в рамках MVC-приложения на C#. Я хотел бы использовать учетные записи, хранящиеся в Azure AD, в качестве источника действительных пользователей, но документация, похоже, относится только к Google, а OpenID & упоминает только Azure.Identityserver 4 и Azure AD

Кто-нибудь знает какую-либо хорошую документацию и/или учебники о том, как использовать Azure AD в контексте использования его с Identity Server 4?

ответ

5

Вы можете использовать signin для Azure AD с IdentityServer так же, как и использовать signin для IdentityServer, например. приложение Javascript или MVC.

Я делал это в последнее время, и все, что вам нужно сделать, это зарегистрировать варианты OpenIdConnect на Лазурном объявление, как это:

public void ConfigureAuth(IAppBuilder app) 
{ 
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

    app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

    app.UseOpenIdConnectAuthentication(
     new OpenIdConnectAuthenticationOptions 
     { 
      ClientId = clientId, 
      Authority = authority, 
      PostLogoutRedirectUri = postLogoutRedirectUri, 
     }); 
} 

Больше информации об этом здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapp-dotnet

Вы должны затем в вашем Вход действие вызова метода ChallengeAsync:

var authenticationProperties = new AuthenticationProperties { RedirectUri = "your redirect uri" }; 
await HttpContext.Authentication.ChallengeAsync(your policy, authenticationProperties); 

затем укажите метод обратного вызова, как метод GET затем следуют образцы внешнего Вход, представленные в Id Образцы entityServer: https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/4_ImplicitFlowAuthenticationWithExternal/src/QuickstartIdentityServer/Quickstart/Account/AccountController.cs

+0

Спасибо за информацию. Я только начинаю с IS4, поэтому мне нужно кое-что спросить: я прочитал документы о внешнем логине, и образец показывает вам кнопку, и я предполагаю, что он перенаправляет вас на страницу аутентификации google, поэтому я также предполагаю, что ваш пример перенаправляется на страницу входа в систему microsoft, или я ошибаюсь? Если это правда, можно автоматически аутентифицировать пользователя, зная его учетные данные? Я имею в виду, кто-то отправляет в мое приложение JS учетные данные пользователя (microsoft), затем я отправляю их на IS4, и он пытается получить токен – FacundoGFlores

+2

. Это действительно точка с OpenID Connect; вы делегируете проблему обработки паролей другой системе, в данном случае Microsoft. Вам нужно будет добавить полномочия, такие как login.microsoft.com или аналогичные, тогда это будет использоваться при перенаправлении. OpenID Connect не является специфичным для Microsoft; это всего лишь спецификация того, как должно происходить логин со сторонним провайдером. –

6

Существует sample with Azure AD on github, раздвоенный из образца внешнего входа, представленного в IdentityServer samples.

Пробу также зафиксировали известную проблему "State parameter generated by middleware is too large for Azure AD #978"

+1

https://github.com/aspnet/Security/issues/1310 Приведенный выше пример кода устарел, из комментариев Хаока «Старый стек проверки подлинности 1.0 больше не будет работать и устарел в версии 2.0». Это касается, в частности, способов, описанных выше в настройках конфигурации аутентификации IdentityServer для аутентификации IdentityServer. Миграция была проведена около 17 июня, что я могу сказать. – JakeJ

+0

Если вы положите app.UseCookieAuthentication, а затем посмотрите на комментарии к конструктору, он перенесет вас к вышеуказанной ссылке. Я все еще поддержал вас за вашу помощь, было бы здорово, если бы я мог просто подключить код, который мне нужен от этого репо. – JakeJ

+0

@JakeJ, вы можете создать проблему в репозитории GitHub, попросив обновить до Core 2.0 или даже отправить запрос Pull. –

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