Добавление Azure AD аутентификации к существующему. Net MVC app: id_token не проверяется - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь добавить Azure аутентификацию AD в приложение. Net MVC, которое в данный момент использует отдельные учетные записи пользователей. Я настроил регистрацию приложения в Azure, установил и настроил OpenID Connect.

В Startup.cs я добавил:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

// app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    // Sets the ClientId, authority, RedirectUri as obtained from web.config
                    ClientId = clientId,
                    Authority = authority,
                    RedirectUri = redirectUri,
                    // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page
                    PostLogoutRedirectUri = redirectUri,
                    Scope = OpenIdConnectScope.OpenIdProfile,
                    // ResponseType is set to request the id_token - which contains basic information about the signed-in user
                    ResponseType = OpenIdConnectResponseType.IdToken,
                    // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
                    // To only allow users from a single organizations, set ValidateIssuer to true and 'tenant' setting in web.config to the tenant name
                    // To allow users from only a list of specific organizations, set ValidateIssuer to true and use ValidIssuers parameter
                    TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = true // Simplification (see note below)
                    },
                    // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = OnAuthenticationFailed
                    }
                }
            );

И в web.config Я установил тип аутентификации Нет

<authentication mode="None"/>

У меня тогда добавлен метод действия, чтобы вызвать вызов:

if (!Request.IsAuthenticated)
{
    HttpContext.GetOwinContext().Authentication.Challenge(
                new AuthenticationProperties { RedirectUri = "http://localhost:54465" },
                OpenIdConnectAuthenticationDefaults.AuthenticationType);
}

Я все еще могу войти в приложение с отдельными учетными записями пользователей (я хотел бы сохранить это как опцию), но не могу войти с помощью Azure н.э. Пользователь перенаправляется на экран входа в систему Azure AD, входит в систему, и я вижу ответ, возвращающийся с id_token, но никогда не аутентифицирующийся в приложении.

Я понял, что это должно произойти автоматически в промежуточном программном обеспечении OpenID Connect, но нужно ли что-то еще настраивать?

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Не забудьте установить RedirectUri, что совпадает с вашим приложением, зарегистрированным в azure ad.

Я проверяю ваш код и могу аутентифицироваться в приложении. В Azure регистрации рекламного приложения нажмите Authentication и выберите Id Token.

enter image description here

Вы можете обратиться к этой статье и загрузите пример добавления входа в платформу идентификации Microsoft в веб-приложение ASP. NET.

0 голосов
/ 18 марта 2020

Я создал чистый проект, используя ту же регистрацию приложения Azure, и она работала, как и ожидалось, поэтому начал сравнивать чистый проект со своим старым. В самые первые дни проекта он использовал SimpleMembershipProvider, и хотя проект с тех пор был изменен на использование ASP. Net Идентификация, на которую все еще ссылались библиотеки DLL WebMatrix и включенные в сборку.

WebMatrix project references

Удаление этих ссылок, очистка и восстановление позволили решить проблему.

...