我们有一个使用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的有效性。
以下是显示设置网址的图片,重定向网址和错误消息网址完全匹配。你只需要相信我被阻挡的部分也是一样的。 :)
有人知道为什么会这样吗?
答案 0 :(得分:2)
协议重要。 Azure AD会将http://website.com
和https://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。
按照以下步骤检查已配置的回复网址并添加其他回复网址:
使用您的租户管理员帐户登录portal.azure.com。
导航到左侧栏中的Azure Active Directory&gt;应用注册&gt;你的应用&gt;所有设置&gt;回复网址。
输入您托管应用的域名,然后点击保存。
此解决方案来自this document。
<强>更新强>
根据您的屏幕截图,您的回复URI不同:
https://domainserver/app/signin-oidc
不在您的回复网址列表中
您的回复网址列表中的是
https://domainserver/app/signin-odic
将其更改为相同的网址。