Перенаправление на страницу с ошибкой при нажатии на кнопку «Отмена» с согласия администратора - PullRequest
0 голосов
/ 07 сентября 2018

Привет, я занимаюсь разработкой веб-приложения. Я использую активный каталог Azure для входа в систему. Я работаю с согласия администратора. Я могу перенаправить к согласию администратора и дать согласие. На странице согласия администратора, когда я нажимаю кнопку «Отмена» в разрешении администратора, я перенаправляю на страницу ошибки. Ниже указан URL, который я перенаправляю при нажатии на странице согласия администратора.

https://mywebsite.net/adminconsent?error=access_denied&error_description=AADSTS65004%3a+The+resource+owner+or+authorization+server+denied+the+request.%0d%0aTrace+ID%3a+7798f669-f82d-4b55-8c9b-1259142e1900%0d%0aCorrelation+ID%3a+82764c15-3e79-4905-840b-952af3dfe6fc%0d%0aTimestamp%3a+2018-09-07+13%3a30%3a42Z

Может ли кто-нибудь помочь мне определить причину проблемы? Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 08 сентября 2018

Вы получаете соответствующий код ошибки от Azure AD - 65004, сообщающий вам основную причину, которую администратор отказался принять. Описание отображается в URL, и если вы можете подтвердить значение кода ошибки, посмотрев его здесь -

Коды ошибок отчета о входе в систему на портале Azure Active Directory

65004 Пользователь отказался дать согласие на доступ к приложению. Попросите пользователя повторить вход в систему и согласие на приложение

Обновление об отображении содержательной страницы ошибки

Вы не упомянули, что вы используете для написания своего веб-приложения. В любом случае, я попробовал быстрое веб-приложение ASP.NET MVC с аналогичной настройкой и четко получил ответ в параметрах строки запроса. Все, что вам нужно сделать, это прочитать строку запроса с URL-адреса (в моем примере есть коллекция HttpRequest.QueryString) и проверить наличие ошибки / error_description.

Вот краткий пример кода для этого в контроллере MVC.

public class AdminConsentController : Controller
    {
        // GET: AdminConsent
        public ActionResult Index()
        {

            if (Request.QueryString.AllKeys.Contains("error")
                && Request.QueryString.AllKeys.Contains("error_description"))
            {
                string errorDescription = Request.QueryString["error_description"];

                if(errorDescription.Contains("AADSTS65005"))
                {
                    //Do something good about it..
                }
            }

            //if no errors, simply return the view
            return View();
        }

Так как вы упомянули Angular 5 ... вот быстрый пример для этого.

Взгляните на это ТАК сообщение для нескольких вариантов

ngOnInit() {
    this.param1 = this.route.snapshot.paramMap.get('param1');
    this.param2 = this.route.snapshot.paramMap.get('param2');
}

И если вы не хотите использовать что-то необычное, просто старое window.location всегда должно работать со стороны клиента. Возможно, не рекомендуемый способ.

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