我有一个.net core 2 app模板,配置为开箱即用的azureAD。
配置
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "lautaroarinolive.onmicrosoft.com",
"TenantId": "67cb2dfd-ebd5-40d8-829b-378340981a17",
"ClientId": "50819a7a-e018-4c1d-bf0a-18c8fce5c600",
"CallbackPath": "/signin-oidc"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
在我的门户网站中,我有一个与ClientId具有相同ID的azure app注册。它有回复网址[APP-URL] / signin-oidc
如果我设置为回复URL [LocalhostURL] / signin-oidc,localhost应用程序只能工作,即使我知道配置不应该影响localhost上的登录。
azure app在任何情况下都不起作用。
在两个应用中,当它无法正常工作时,我会收到错误:
AADSTS50011:请求中指定的回复网址与 为应用程序配置的回复网址: ' 50819a7a-e018-4c1d-bf0a-18c8fce5c600'
1)localhost应用程序不需要配置的回复URL是否正确? 2)为什么我没有配置"回复网址"错误?
答案 0 :(得分:4)
您可以参考this Sample重建.NET核心应用并发布到Azure。
您需要注意一些注意事项:
您需要将端口从5000更改为有效端口。目前,它应该是61659。因此,当您在本地主机中进行测试时,您可以使用http://localhost:61659/signin-oidc
如果您将应用程序配置为生产用途,则更新这些URL;如果您将应用程序发布到Azure Web App,则应将App配置文件和AAD Applicaiton中的回复URL更改为<AppURL>/signin-oidc
< / p>
例如,https://www.contoso.com/signin-oidc
或https://Myapp.azurewebsites.net/signout-oidc
。
答案 1 :(得分:2)
.NET 4.6.1 Web应用程序遇到类似的问题。 我必须以与接受的答案类似的方式,以天蓝色为我的应用程序配置“回复URL”,但是回调URL不同。
Select Azure Active Directory -> App Registrations -> <your app>
Select Settings -> Reply URLs
添加您的应用程序URL +'/.auth/login/aad/callback' 例如: https://somesite.azurewebsites.net/.auth/login/aad/callback
答案 2 :(得分:1)
在您的 Microsoft 登录页面中检查您的重定向 uri
redirect_uri=https://localhost:8443/login&response_type=code&scope=openid%20profile&state=7GsiHb
并确保您在已注册的应用程序中添加了相同的 URI 以重定向 URI 列表(Active Directory -> 应用程序注册 -> 您的应用程序)。正如其他答案中提到的,可能需要将支持的帐户类型更改为“多个组织”。
答案 3 :(得分:0)
确保services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
必须在身份验证配置下。
services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(options =>
{
options.Authority = "";
options.ClientId = "";
options.ResponseType = OpenIdConnectResponseType.IdToken;
options.CallbackPath = "";
options.SignedOutRedirectUri = "";
options.TokenValidationParameters.NameClaimType = "name";
})
.AddCookie();
由于在AddMvc()
扩展方法之前添加了AddAuthentication()
,因此我遇到了同样的错误。
答案 4 :(得分:0)
答案 5 :(得分:0)
在某些情况下,即使您在门户网站上指定不含“ www”的网址,也一定要在网址上使用“ www”。在您的redirectUri变量中使用“ https://www.mysite.co/signin-oidc”而不是“ https://mysite.co/signin-oidc”。
答案 6 :(得分:0)
很小,但是在Web租户中,在自定义域设置中,应根据站点使用的URL启用“仅HTTPS”选项。我遇到了同样的问题,因为在登录时,redrect_uri = http://sitename是串联的而不是https。启用此选项解决了我的身份验证问题。
答案 7 :(得分:0)
如果您是从AAD登录,则应使用app-base-url / sigin-aad。
答案 8 :(得分:0)
如果您使用React-Native。能够检查Web门户:https://portal.azure.com/。
iOS:{YOUR_BUNDLE_IDENTIFIER}:// {{OUR_BUNDLE_IDENTIFIER} / ios / callback
Android:{YOUR_APP_PACKAGE_NAME}:// {{OUR_APP_PACKAGE_NAME} / android / callback
请参考下图。
答案 9 :(得分:0)
刚刚遇到同样的错误。我的应用程序是一个 .NET 5 ASP.NET Core 应用程序,它在 Web 应用程序内的 Linux docker 容器中运行。使用 Fiddler 进行故障排除表明,在对 login.microsoft.com 的调用中,redirect_uri 查询字符串变量的值以“http://”而不是“https://”开头,尽管我尝试强制执行 TLS - 仅在网络应用程序本身上。这导致 URL 不匹配和错误 AADSTS50011。
在 Web 应用程序上设置环境变量 ASPNETCORE_FORWARDEDHEADERS_ENABLED=true 已解决该问题。微软在此处记录了它:https://devblogs.microsoft.com/aspnet/forwarded-headers-middleware-updates-in-net-core-3-0-preview-6/
答案 10 :(得分:0)
对我来说唯一的解决方案:在 Azure 门户 https://portal.azure.com
中,导航到“应用程序注册”-> 选择您的应用程序 -> 从左侧边栏菜单中的“身份验证”->“移动和桌面应用程序”重定向 URI -> 并点击“添加 URI” -> 输入以下内容
ms-appx-web://microsoft.aad.brokerplugin/{Your_Application's_Client_ID}
示例:ms-appx-web://microsoft.aad.brokerplugin/5r3257qe-7jci-3501-38k0-3791h90542m7