pro*_*eus 3 c# asp.net-mvc azure nonce openid-connect
我在我的 azure 网站(azure Active Directory、C#、MVC)上使用 OpenIdConnect 身份验证,并且随机收到此错误
IDX10311:requireNonce 为 true(默认),但validationContext.Nonce 为 null。无法验证随机数。如果不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为 false
我正在使用 KentorOwinCookieSaver,据我所知,它是这个问题的解决方案,但显然我错了,因为它不断发生。我怎样才能阻止这个?
在ConfigureAuth方法中我有这一行
app.UseKentorOwinCookieSaver();
Run Code Online (Sandbox Code Playgroud)
根据您的描述,我按照本教程并使用此代码示例来检查此问题。身份验证中间件的初始化如下所示:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("/Error?message=" + context.Exception.Message);
return Task.FromResult(0);
}
}
});
Run Code Online (Sandbox Code Playgroud)
使用fiddler捕获日志记录时的网络痕迹,您可以发现 OpenIdConnect.nonce cookie 在 OpenID Connect 中间件开始身份验证请求之前会发送到浏览器,如下所示:
用户输入凭据并同意权限后,authorization_code, id_token,state将被发布到您指定的RedirectUri,然后将执行一些验证并生成新的 cookie 并删除以前的 OpenIdConnect.nonce cookie,如下所示:
IDX10311:requireNonce 为 true(默认),但validationContext.Nonce 为 null。无法验证随机数。如果不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为 false
我使用Microsoft.Owin.Security.OpenIdConnect 3.0.1来测试这个问题。根据我的理解,您需要确保您的 OpenIdConnect.nonce cookie 已成功发送到您的浏览器。例如,如果您的 cookie 发出到https://localhost:44353/,而 RedirectUri 设置为http://localhost:4279,那么我会遇到类似的问题:
或者您可以尝试将 OpenIdConnectProtocolValidator.RequireNonce 显式设置为 false 以禁用检查随机数。
| 归档时间: |
|
| 查看次数: |
11251 次 |
| 最近记录: |