Azure active directory 每次请求用户同意Azure广告应用程序

Azure active directory 每次请求用户同意Azure广告应用程序,azure-active-directory,Azure Active Directory,我有一个用Angular 2编写的Azure广告应用程序。该应用程序运行良好,因为我可以登录AD并获得访问令牌。然而问题是,我每次登录都会收到一个同意请求。下面是请求的样子 "https://login.microsoftonline.com/" + this.tenantId + "/oauth2/authorize?" + "response_type=id_token+token&" + "response_mode=fragment

我有一个用Angular 2编写的Azure广告应用程序。该应用程序运行良好,因为我可以登录AD并获得访问令牌。然而问题是,我每次登录都会收到一个同意请求。下面是请求的样子

        "https://login.microsoftonline.com/" + this.tenantId + "/oauth2/authorize?" +
        "response_type=id_token+token&" +
        "response_mode=fragment&" +
        "client_id=" + this.clientId + "&" +
        "redirect_uri=" + encodeURIComponent(window.location.href) + "/&" +
        "scope=openid&" +
        "state=" + this.state + "&" +
        "resource=" + encodeURIComponent(this.appuri) + "&" +
        "nonce=" + this.nonce;
这会将我发送到Azure登录屏幕,并获得拨号同意,就像这样

我点击“接受”,然后被引导回到我想去的地方,一切都很好。如果我再次登录,我会得到相同的提示。我需要在Azure广告端采取什么步骤来存储用户的同意?
是否在清单中?

您看到的同意屏幕是“管理员同意屏幕”,只有在您将“prompt=admin_approve”作为登录url的查询字符串传递时,该屏幕才会出现

同时,如果您传递此查询字符串,则每次都会提示您同意应用程序。相反,您希望确保只传递此查询字符串一次(用户第一次使用应用程序时),并且在获得同意后,确保不传递任何“提示”查询字符串


我希望这能解决你的问题

您看到的同意屏幕是“管理员同意屏幕”,只有在您将“prompt=admin_approve”作为登录url的查询字符串传递时,才会显示该屏幕

同时,如果您传递此查询字符串,则每次都会提示您同意应用程序。相反,您希望确保只传递此查询字符串一次(用户第一次使用应用程序时),并且在获得同意后,确保不传递任何“提示”查询字符串


我希望这能解决你的问题

您是从哪里注册应用程序的,还是从[V2.0端点]()?您是否正在开发多租户应用程序?请在AD=>应用程序的“我的公司使用的应用程序”字段中进行检查。如果此应用程序在已登录用户所属的AD中注册,则不会再次出现“同意”页面。您的应用程序在授予许可时未在广告中注册。@fei xue msft我在广告区域的portal.azure.com上注册了该应用程序。是的,它是多租户的,但到目前为止我只同意了一家公司,实际上是同一个管理员帐户。@RahulMohan我的应用程序在manage.windowsazure.com的列表中。还有什么问题?@FeiXue MSFT使用其他方法(apps.dev)会出现其他错误您在哪里注册应用程序或[V2.0端点]()?您是否正在开发多租户应用程序?请在AD=>应用程序的“我的公司使用的应用程序”字段中进行检查。如果此应用程序在已登录用户所属的AD中注册,则不会再次出现“同意”页面。您的应用程序在授予许可时未在广告中注册。@fei xue msft我在广告区域的portal.azure.com上注册了该应用程序。是的,它是多租户的,但到目前为止我只同意了一家公司,实际上是同一个管理员帐户。@RahulMohan我的应用程序在manage.windowsazure.com的列表中。还有什么问题?@FeiXue MSFT使用其他方法(apps.dev)会出现其他错误