我有一个针对 Azure Active Directory 进行身份验证的 ASP.NET MVC 5 应用程序。我想在整个应用程序上启用 SSL。因此利用全局过滤器如下:
public class FilterConfig
{
/// <summary>
/// Registers the global filters.
/// </summary>
/// <param name="filters">The filters.</param>
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new RequireHttpsAttribute());
}
}
在此之后,我还将项目属性中的“启用 SSL”设置为 true。这给了我以下 SSL URL -> https://localhost:34567。我更新了项目,使其位于“项目 URL”中服务器下的“Web 选项卡”下的 IIS Express 路径中。但是在运行该站点时,我遇到了以下错误:
IDX10311:RequireNonce 为“真”(默认),但 validationContext.Nonce 为空。无法验证随机数。如果您不需要检查 nonce,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。
我有身份验证。在网站上启用。我使用 Azure 活动目录。
安全码如下:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri
});
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = audience,
Tenant = tenant,
});
授权。正在从 web.config 读取值,如下所示:
<add key="ida:ClientId" value="<some_guid>" />
<add key="ida:Audience" value="https://localhost:34567/" />
<add key="ida:AADInstance" value="https://login.windows.net/{0}" />
<add key="ida:Tenant" value="microsoft.onmicrosoft.com" />
<add key="ida:PostLogoutRedirectUri" value="https://localhost:34567/" />
我尝试按照错误消息中的指示将 RequireNonce 设置为 false,如下所示:
ProtocolValidator = new OpenIdConnectProtocolValidator
{
RequireNonce = false
}
但这只会导致无效的请求错误。
有人可以帮我理解这里的问题吗?在启用 SSL 之前,一切都很好。