AAD使用https回复Url问题

时间:2017-11-16 00:35:54

标签: asp.net-core azure-active-directory

我们有一个使用AAD进行身份验证的本地asp.net核心应用程序,该应用程序设置为同时运行:

http://domainserver/app &安培; https://domainserver/app

在Azure AD中,应用程序的回复网址设置为 http://domainserver/app/signin-oidc& https://domainserver/app/signin-oidc

使用http url时,登录过程正常,但在https模式下,我们收到以下错误:

  

AADSTS50011:回复地址“https://domainserver/app/signin-oidc”   与为应用程序配置的回复地址不匹配:   appguid。更多细节:未指定

回复https url在AAD中为应用程序设置与错误消息中显示的完全相同,因此我不确定为什么它说它不匹配。 我能想到的一个原因是用于https的SSL证书是本地域签名证书,并且它以某种方式导致错误。但我不确定是否是这种情况,因为AAD只负责重定向回指定的网址,不应该真正关心或了解SSL的有效性。

enter image description here

以下是显示设置网址的图片,重定向网址和错误消息网址完全匹配。你只需要相信我被阻挡的部分也是一样的。 :)

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

协议重要。 Azure AD会将http://website.comhttps://website.com视为不同的回复网址。但是,Azure只能让您在同一个域中放入多个回复URL。案例解决方案可能对您有所帮助:

问题:使用Azure AD身份验证选项登录Skype for Business(SfB)Web SDK,您将看到AAD错误页面。错误页面应该包含以下消息:

  

" AADSTS50011:回复地址' https://...'与回复不符   为应用程序配置的地址< ...>"

<强>解决方案:

您需要在您的应用的AAD注册中配置主域名作为回复网址,并在重定向到AAD时将其作为redirect_uri传递用户登录。

您应该使用这样的代码重定向用户以输入她的凭据以登录Azure AD:

var href = 'https://login.microsoftonline.com/common/oauth2/authorize?response_type=token&client_id=';
href += client_id + '&resource=https://webdir.online.lync.com&redirect_uri=' + window.location.href;
window.location.href = href;

注意在上面的代码中,我们使用window.location.href作为redirect_uri查询参数的值,形成用户将登录的AAD端点的URL。此参数告诉AAD将客户端浏览器和通过登录AAD获得的访问令牌重定向回我们当前所在的页面 - 主应用页面。但是,AAD只会将访问令牌重定向到在AAD中的应用注册中指定为回复URL的URL。

按照以下步骤检查已配置的回复网址并添加其他回复网址:

  1. 使用您的租户管理员帐户登录portal.azure.com。

  2. 导航到左侧栏中的Azure Active Directory&gt;应用注册&gt;你的应用&gt;所有设置&gt;回复网址。

  3. 输入您托管应用的域名,然后点击保存。

  4. 此解决方案来自this document

    <强>更新

    根据您的屏幕截图,您的回复URI不同:

    https://domainserver/app/signin-oidc  
    

    不在您的回复网址列表中

    您的回复网址列表中的

    https://domainserver/app/signin-odic enter image description here

    将其更改为相同的网址。