Переадресация выхода с помощью Azure B2C и .NET Core - PullRequest
1 голос
/ 03 июля 2019

Терпите меня, так как я новичок в Azure B2C. Моя проблема в том, что я не могу установить URI перенаправления выхода при выходе из моего приложения с проверкой подлинности Azure B2C.

Некоторая справочная информация, приложение является базовым веб-приложением .NET со страницами бритвы, и для него была настроена аутентификация с помощью вспомогательного инструмента в Visual Studio при создании проекта.

Я вижу созданную по умолчанию кнопку выхода из системы, которая обращается к области asp под названием «AzureADB2C» с контроллером asp «Account» и действием asp «SignOut». Все они скрыты в библиотеке B2C, к которой у меня нет доступа в моем решении.

Я попытался создать собственную кнопку выхода из системы, которая удаляет файлы cookie авторизации, а затем отправляет запрос на выход в Microsoft с прикрепленным URL-адресом перенаправления, но, похоже, это не сработало.

Это выход из системы по умолчанию при создании проекта

<a class="nav-link text-dark" asp-area="AzureADB2C" asp-controller="Account" asp-action="SignOut">Sign out</a>
        </li>

Бэкэнд-метод. Я попытался удалить куки-файлы аутентификации и исправить, что не помогло.

public async Task<RedirectResult> OnPostLogout()
        {
            foreach (var cookieKey in Request.Cookies.Keys)
            {
                Response.Cookies.Delete(cookieKey);
            }

            return new RedirectResult(https://MyApp.azurewebsites.net/.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fgoogle.com);
        }

Когда я пытаюсь выполнить свою собственную кнопку выхода, перенаправление не работает.

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Вы не указали, настроен ли ваш арендатор B2C для разрешения «социальных» провайдеров идентификации (например, Google, Facebook и т. Д.) Или только локальный, встроенный в арендатора B2C.Внешние IdP добавляют некоторые существенные проблемы.

В любом случае при выходе из системы вы должны перенаправить на URL-адрес, указанный на странице документации от Microsoft, который отличается от того, что вы пытаетесь:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1_sign_in&post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F

Поскольку механизм выхода из системы основан на браузере, вы можете легко увидеть, правильно ли вы перенаправлены, используя инструменты разработчика браузера или Fiddler.

0 голосов
/ 04 июля 2019

Хотя перенаправление пользователя в end_session_endpoint очистит некоторые состояния единого входа пользователя с помощью Azure AD B2C, оно не выведет пользователя из сеанса поставщика социальных идентификаторов пользователя (IDP). Если пользователь выберет тот же IDP во время последующего входа в систему, он будет повторно аутентифицирован без ввода своих учетных данных. Если пользователь хочет выйти из вашего приложения B2C, это не обязательно означает, что он хочет полностью выйти из своей учетной записи Facebook. Однако в случае локальных учетных записей сеанс пользователя будет правильно завершен.

Если вы хотите выйти из приложения, недостаточно просто удалить куки приложения или иным образом завершить сеанс с пользователем. Перенаправьте пользователя в Azure AD B2C для выхода. Если вы этого не сделаете, пользователь может повторно подтвердить подлинность вашего приложения, не вводя свои учетные данные снова.

Вы можете просто перенаправить пользователя на конечную точку end_session, которая указана в документе метаданных OpenID Connect:

GET https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/v2.0/logout?
p=b2c_1_sign_in
&post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F

https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_sign_in

См. Ниже документ для дальнейшей справки

https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oidc#send-a-sign-out-request

Надеюсь, это поможет.

...