Blazor Webassembly Проверка подлинности Azure AD, размещенная в учетной записи хранения Azure

В соответствии с инструкциями, описанными в разделе «Защита автономного приложения ASP.NET Core Blazor WebAssembly с помощью Azure Active Directory» https://docs.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/standalone-with-azure-active-directory?view=aspnetcore-3.1 Я создал простейшее приложение для веб-сборки Blazor. На https://portal.azure.com я зарегистрировал новое приложение в AAD и на основе сгенерированных GUID сгенерировал локальное приложение с помощью этой команды:

dotnet new blazorwasm -au SingleOrg --client-id {ИДЕНТИФИКАЦИЯ КЛИЕНТА} --tenant-id {ИДЕНТИФИКАТОР Арендатора} -o {НАЗВАНИЕ ПРИЛОЖЕНИЯ}

Все работало нормально, если я запускал приложение локально. Если я скопировал опубликованное приложение в учетную запись хранения $ web и попытался войти в систему, я получил:

AADSTS50011: URL-адрес ответа, указанный в запросе, не соответствует URL-адресам ответа, настроенным для приложения: «…».

Во время регистрации приложения я определил приложение как «Интернет» и поместил URL-адрес перенаправления: https://localhost:5001/authentication/login-callback Я пробовал разные комбинации URL, изменяя имя хоста, удаляя порт и меняя путь. Я не знаю, как успешно настроить приложение в AD.


person Marek Słowikowski    schedule 17.07.2020    source источник
comment
Перейдите к своей учетной записи хранения на портале - ›Static website -› скопируйте Primary endpoint, затем измените URL-адрес перенаправления на <Primary endpoint>/authentication/login-callback, что-то вроде https://xxxx.z13.web.core.windows.net/authentication/login-callback, это сработает?   -  person Joy Wang    schedule 17.07.2020
comment
Я изменил URL-адрес перенаправления, как вы предложили, и после нажатия на ссылку для входа сервер ответил. Запрошенное содержимое не существует. HttpStatusCode: 404 ErrorCode: WebContentNotFound RequestId: 59d63c65-a01e-00d7-7827-5c8b94000000 TimeStamp: 2020-07-17T10: 43: 11.6487124Z   -  person Marek Słowikowski    schedule 17.07.2020
comment
Если это так, то исходная проблема была решена, для новой проблемы необходимо указать документ об ошибке при включении веб-сайта, затем пользователю будет возвращена страница 404 по умолчанию, см. docs.microsoft.com/en-us/azure / storage / blobs /   -  person Joy Wang    schedule 17.07.2020
comment
Первоначальный вопрос не решен. Проблема та же: HTTP-сервер не может найти место посадки (URL-адрес перенаправления) после входа пользователя в систему. Я только что прочитал исходный код библиотеки аутентификации. Все в порядке, проблема в другом месте.   -  person Marek Słowikowski    schedule 17.07.2020
comment
Не могли бы вы показать URL-адрес вашего запроса при входе пользователя в систему?   -  person Joy Wang    schedule 17.07.2020
comment
(https: //...web.core.windows.net/authentication/login)   -  person Marek Słowikowski    schedule 18.07.2020
comment
Я имею в виду URL-адрес запроса, который вы использовали для получения токена.   -  person Joy Wang    schedule 20.07.2020
comment
У меня была такая же проблема, но второй комментарий @ JoyWang решил ее (вам также необходимо указать index.html в качестве документа об ошибке).   -  person White hawk    schedule 16.06.2021


Ответы (2)


Ошибка AAD указывает на то, что URL-адрес, который вы перенаправляете, отсутствует в списке URL-адресов ответа, настроенном при регистрации приложения. Вам необходимо зарегистрировать URL-адрес ответа в формате - {WebsiteUrl} / authentication / login-callback.
Попробуйте, и мы надеемся, что проблема решится.
Note-WebsiteUrl - это URL-адрес, размещенный на лазурном сервере

person Aditya Singh    schedule 30.07.2020
comment
Я пробовал этот локальный хост и полное имя сайта. Это не работает. - person Marek Słowikowski; 30.07.2020
comment
@ MarekSłowikowski - я имел в виду, что {WebsiteUrl} / authentication / login-callback должен быть зарегистрирован как URL-адрес ответа в вашей регистрации приложения Azure Active Directory (лезвие аутентификации). Все, что вы используете в качестве URI перенаправления в своем приложении, должно быть точно аналогично тому, который зарегистрирован в ответных URL-адресах в AAD. - person Aditya Singh; 31.07.2020
comment
@ MarekSłowikowski - когда ваше приложение перенаправляется в активный активный каталог Azure, вы получите URL-адрес в формате - login.microsoftonline. com {tenant} /oauth2/v2.0/authorize? client_id = 6731de76-14a6-49ae-97bc-6eba6914391e & response_type = id_token & redirect_uri = http% 3A% 2F% 2Flocalhost% 2Fmyapp% 2F & scope = openid & response_mode = fragment & state = 12345 & nonceirect = 678910, пожалуйста, сообщите, что такое перенаправление uri приложение проходит по URL-адресу? - person Aditya Singh; 31.07.2020
comment
Я только что прочитал, что статические сайты, созданные в учетной записи хранения Azure, не поддерживают CORS. Служба приложений Azure делает так, чтобы тот же статический сайт, что и служба приложений Azure, работал нормально. - person Marek Słowikowski; 31.07.2020
comment
@ MarekSłowikowski - Рад узнать, что аутентификация работает на вашем статическом веб-сайте, развернутом в службе приложений. Вы можете взглянуть на службу приложений Azure для статических веб-сайтов (предварительная версия), которая была создана в основном для статических веб-сайтов и может также соответствовать вашим потребностям. Странно, потому что учетные записи хранения поддерживают cors, поэтому статический веб-сайт, размещенный в учетных записях хранения, должен поддерживать cors, я буду исследовать эту проблему дальше и сообщу вам, если найду что-нибудь полезное. - person Aditya Singh; 31.07.2020
comment
@ MarekSłowikowski - Если вы можете уточнить следующий вопрос, это будет для меня действительно полезно - Изменили ли вы какую-либо конфигурацию перед развертыванием приложения в службе приложений? Если да, то было бы действительно полезно узнать, что это было? - person Aditya Singh; 31.07.2020
comment
Нет, я не. Я опубликовал ту же копию на статическом веб-сайте iwebsite учетной записи хранения Azure и в Службу приложений Azure. - person Marek Słowikowski; 02.08.2020

Основываясь на ответах и ​​комментариях выше, я предпринял 2 шага, чтобы решить эту проблему:

  1. В Azure AD должна быть запись в Регистрация приложения | Аутентификация | Одностраничное приложение | URI перенаправления, который читается как {WebsiteUrl}/authentication/login-callback. {WebsiteUrl} поступает из Учетной записи хранения | Статический сайт | Основная конечная точка.

  2. Убедитесь, что Учетная запись хранения | Статический сайт | Имя индексируемого документа и путь к документу с ошибкой оба указывают на index.html.

person White hawk    schedule 17.06.2021