单击管理员同意上的取消按钮时,重定向到错误页面

时间:2018-09-07 13:34:56

标签: azure azure-active-directory

嗨,我正在开发Web应用程序。我正在使用Azure活动目录进行登录过程。我正在征得管理员同意。我能够重定向到管理员同意并给出同意。在“管理员同意”页面中,每当我单击“管理员同意”中的“取消”按钮时,我都会重定向到错误页面。 下面是单击管理员同意页面时要重定向的网址。

  

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 :(得分:1)

您正在从Azure AD 65004获取相关的错误代码,告诉您根本原因是Admin拒绝同意。说明在URL中可见,如果您可以通过在此处查找来确认错误代码的含义-

Sign-in activity report error codes in the Azure Active Directory portal

  

65004用户拒绝同意访问该应用程序。让用户重试   登录并同意使用该应用

有关显示有意义的错误页面的更新

您没有提到用于编写Web应用程序的内容。无论如何,我尝试了一个具有类似设置的快速ASP.NET MVC Web应用程序,并且很明显地我获得了查询字符串参数中的响应。您所需要做的就是从URL中读取查询字符串(我的示例中有HttpRequest.QueryString集合)并检查是否有错误/错误说明。

这是在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.。这里是一个快速示例。

看看这个SO post有多种选择

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

如果您不想使用任何花哨的内容,那么普通的旧window.location应该始终从客户端运行。可能不是推荐的方法。

window.location.href