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 は 'true' (デフォルト) ですが、validationContext.Nonce は null です。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が有効になるまで、すべてがうまくいきました。