我有一个针对 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://本地主机:34567 https://localhost:34567。我更新了该项目,使其位于“项目 URL”中服务器下“Web 选项卡”下的 IIS Express 路径中。但是,在运行该网站时,我遇到以下错误:
IDX10311:RequireNonce 为“true”(默认),但validationContext.Nonce 为空。无法验证随机数。如果您不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。
我有授权。在网站上启用。我使用 Azure Active Directory。
安全码如下:
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 之前,一切都运行良好。