SITECORE MANIA 開発者向け技術ブログ

その他

劉

Sitecore追跡機能オフによるEntraID認証エラーの解決法

Sitecore(サイトコア)のユーザー追跡機能をオフ際に、Entra ID(旧Azure AD)認証エラーに遭ったことはありますでしょうか。
本記事では、そのエラーを解決する方法を紹介します。

エラーについて

Entra ID(旧Azure AD)認証を利用した上で、下記のようなSitecore設定を実施されることにより、エラーが発生します。

<configuration xmlns:patcch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/">
	<sitecore>
        <sites>
            <!-- 訪問者の同意に基づくWebトラッキング機の有効化または無効化 -->
            <site name="mywebsite" set:enableTracking="true" set:explicitConsentForTrackingIsRequired="true" />
        </sites>
	</sitecore>
</configuration>
<configuration xmlns:patcch="http://www.sitecore.net/xmlconfig/">
	<sitecore>
		<settings>
            <!-- Xdbの無効化 -->
            <setting name="Xdb.Enabled" value="false" />
            <!-- Webトラッキング機の無効化 -->
			<setting name="Xdb.Tracking.Enabled" value="false" />
		</settings>
	</sitecore>
</configuration>

ログインする際に画面上に表示されるエラー。

ログイン時のエラーの画像

Sitecoreログに出力されるエラー。

WARN  An error with Nonce cookie occured.
Exception: Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolInvalidNonceException
Message: IDX21323: RequireNonce is 'True'. OpenIdConnectProtocolValidationContext.Nonce was null, OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce was not null. The nonce cannot be validated. If you don't need to check the nonce, set OpenIdConnectProtocolValidator.RequireNonce to 'false'. Note if a 'nonce' is found it will be evaluated.
Source: Microsoft.IdentityModel.Protocols.OpenIdConnect
   場所 Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidator.ValidateNonce(OpenIdConnectProtocolValidationContext validationContext) 場所 C:\agent2\_work\56\s\src\Microsoft.IdentityModel.Protocols.OpenIdConnect\OpenIdConnectProtocolValidator.cs:行 639
   場所 Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidator.ValidateAuthenticationResponse(OpenIdConnectProtocolValidationContext validationContext) 場所 C:\agent2\_work\56\s\src\Microsoft.IdentityModel.Protocols.OpenIdConnect\OpenIdConnectProtocolValidator.cs:行 264
   場所 Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthenticationHandler.<AuthenticateCoreAsync>d__11.MoveNext()

エラーの発生原因

Webトラッキング機能をオフすることにより、ログイン直前に実行するクッキー初期化するパイプラインが止られています。
そのため、ログイン時にクッキーの確認をとれなくなってしまいました。

エラーの解決方法

カスタムプロセス内にOWIN経由でクッキーを強制的に初期化する処理を追加します。

using Microsoft.Owin.Host.SystemWeb;

public class AzureADIdentityProviderProcessor : IdentityProvidersProcessor
{
    protected override void ProcessCore(IdentityProvidersArgs args)
    {
        args.App.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions {
            CookieManager = new SystemWebCookieManager()
        });
    }
}


※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。

この記事を読んだ人はこちらの記事も読んでます

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス