Сбой URL ответа Azure AD в html-обработчике - PullRequest
0 голосов
/ 15 марта 2019

Через ASP.NET я создал файл запуска, который будет использовать Azure AD для входа в систему, например,

 public void Configuration(IAppBuilder app)
 {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions()
        {
            ClientId = "42067b8d-b972-44e9-af86-ef60bc6d6fdb",
            Authority = "https://login.windows.net/...com",
            RedirectUri = "http://localhost:50560/content/story_html5.html",
            PostLogoutRedirectUri = "http://localhost:50560/content/story_html5.html",
            Scope = OpenIdConnectScope.OpenIdProfile,
            ResponseType = OpenIdConnectResponseType.IdToken
        });
  }

И, как вы можете видеть, мой RedirectUri при попадании в html-файл статического файла.

При регистрации моего приложения на портале Azure мой манифест для replyUrls гласит:

"replyUrls": [
"http://localhost:50560/content/story_html5.html"
],

Так что все работает и подключается правильно.

(если я, например, использую aspx, перенаправление будет работать)

Однако, используя файл .html, я получаю сообщение об ошибке

Ошибка HTTP 405.0 -Метод не разрешен

Страница, которую вы ищете, не может быть отображена, потому что используется недопустимый метод (HTTP-глагол).

Все, что я должен сделать, это добавить HTMLобработчик Azure AD, кто-нибудь знает, как это сделать?

Спасибо

1 Ответ

1 голос
/ 15 марта 2019

Это не имеет ничего общего с Azure AD, кроме вашей конфигурации. Твой конец. Ваш проект. Ваш конфиг IIS. Поскольку ответ на вход в систему является HTTP POST по соображениям безопасности. А обработчик статических файлов в IIS по понятным причинам не принимает ничего, кроме GET.

Больше информации вы найдете здесь и там .

Во-первых, зачем вам перенаправлять на статическую страницу ?! При перенаправлении после входа в систему OIDC IdP (поставщик удостоверений, в данном случае понимающий Azure AD) отправляет ценную информацию, которая необходима промежуточному программному обеспечению OIDC (понимает метод .UseOpenIdConnectAuthentication), чтобы иметь возможность проверить токен и инициализировать сеанс пользователя. Отправляя ответ о входе обратно на статическую страницу, вы выполняете несколько действий:

  • Вы отключили промежуточное программное обеспечение OIDC из аутентификации - оно больше не может обрабатывать ответ. Потому что он не будет слушать статические запросы файлов. Статические файлы обрабатываются вне вашего промежуточного программного обеспечения аутентификации OWIN.
  • Таким образом не может проверить подлинность пользователя.
  • Таким образом, не удалось создать безопасный cookie.
  • Таким образом, невозможно войти в приложение пользователя.

Вывод

Не изменяйте URL-адрес ответа для промежуточного программного обеспечения ASP.NET, если только вы явно и сознательно не хотите переопределить полную обработку ответов на вход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...