最终编辑: 我做了一些改变原始问题的发现。试图找出使用哪个appsettings文件我进入在线App Service Editor并将clientId更改为反映他们所在文件的字符串。我更改了所有appsettings。仍然是相同的错误消息,指出特定的clientID与replyUrl不匹配。 事实是,没有任何appsetting文件包含此cliendId了。所以我开始删除文件后的appsetting文件。每次删除后我重新启动app。仍然是相同的错误消息。即使在那里没有任何appsettings仍然相同的错误消息与相同的ClientId。 因此,我认为Azure可能会遇到一些旧的代码版本,并没有构建任何新的上传。这可以解释这种行为。我做了一个新的应用程序,现在错误消息中的clientId按预期显示appsettings文件中的clientId。 现在我的问题是,是否有一些超级重启功能,因为该网站似乎被卡住了?我想知道它是否再次发生。
原帖:
我有一个使用AzureAD身份验证的.net core 2应用程序。它可以在我的本地计算机上使用AzureAD进行身份验证。但是当访问在线网站时,我收到了这个错误:
AADSTS50011:请求中指定的回复网址与为应用程序配置的回复网址不匹配:' 267b122b-b3e7-4ac0-a235-fc3019fc1e49'。
我已经检查了AppRegistration / ReplyURLs及其中的网址 https://siteadress.azurewebsites.net
我还检查了appSettings.json
中的applicationId是否正确。
我实际上有相同代码的四个版本。 我公司Azure帐户中的本地和Azure站点。 我自己的测试Azure帐户中的本地和Azure站点。
除了公司帐户上的azure版本外,它们都有效。
此错误消息说回复网址不匹配显示upp我在appsettings.json
中放置的内容。我尝试在applicationId,tennantId和domain中部署错误的信息。我已多次尝试并每次都重新启动该网站。不过,我收到此错误消息。所以我得出的结论是appsettings.json
没有被网站阅读。
我已经在azure portal中检查了appsettings,它只有DEFAULT_NODE_DEFAULT_VERSION 6.9.2。
appsettings.json文件是正确的。
当我将appsettings.development.json
中的applicationID更改为" HelloWorld"并在本地运行该站点,我收到错误,指出没有为应用程序配置匹配的回复URL" HelloWorld"。这样我就可以看到它被阅读了。但不是在天蓝色的网站上。
以下是appSettings.json
:
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"GraphInstance": "https://graph.microsoft.com",
"GraphVersion": "v1.0",
"Domain": "xxxxx.onmicrosoft.com",
"TenantId": "xxxx-862d-4076-8aaf-e504b2cdd263",
"ClientId": "267b122b-b3e7-4ac0-a235-fc3019fc1e49!",
"ClientSecret": "*******************************",
"Scopes": "openid email profile offline_access",
"CallbackPath": "/signin-oidc",
"BaseUrl": "https://siteadress.azurewebsites.net"
}
launchSettings.json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:1940/",
"sslPort": 44371
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "http://localhost:1940/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"HiQ_Adress": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:1941/"
}
}
}
Startup.cs
public class Startup
{
public const string ObjectIdentifierType = "http://schemas.microsoft.com/identity/claims/objectidentifier";
public const string TenantIdType = "http://schemas.microsoft.com/identity/claims/tenantid";
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAd(options => Configuration.Bind("AzureAd", options))
.AddCookie();
services.Configure<AzureAdOptions>(Configuration.GetSection("AzureAd"));
services.AddSingleton<IMyProfileAppService, MyProfileAppService>();
services.AddSingleton<IAddressAppService, AddressAppService>();
services.AddSingleton<IAuthenticationHelper, AuthenticationHelper>();
services.AddSingleton<IAzureAdUserService, AzureAdUserService>();
services.AddSingleton<IGraphApiClient, GraphApiClient>();
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
// template: "{controller=Home}/{action=Index}/{id?}");
});
}
}