【发布时间】:2015-06-12 17:03:47
【问题描述】:
我有一个针对 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 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 之前一切正常。
【问题讨论】:
-
我想我明白了。该应用程序。 Azure AD 中的详细信息硬连线以依赖于原始 HTTP 终结点。一旦我验证了我的理论,就会更新这个。
-
我也收到了...
-
拜托,你修复了这个错误吗?我也有同样的情况。
-
在这个线程中检查我的答案:stackoverflow.com/questions/39412570/…
标签: asp.net-mvc ssl openid-connect nonce asp.net-mvc-filters