日本語版
最新ニュース
企業

安全な Cookie とサードパーティのアドオンを使用した Opti ID

Opti ID は、Optimizely One スイートへのアクセスに革命をもたらし、現在、私が構築するすべての PAAS CMS Web サイトで優先される認証方法です。 ただし、常に注意が必要な注意点がいくつかあります。両方の解決策を以下に概説します。 安全なクッキー Web サイトで実行する侵入テストでは、Cookie が Secure、HTTP Only、SameSite モード Strict に設定されていることが常に通知されます。 これらの設定は、Opti ID Cookie がサードパーティのものであるため、SameSite モードの None が必要であることがわかるまでは非常に簡単です。 CMS の認証方法として Microsoft Entra (旧称 Azure AD) を使用したことがある場合、この問題はよく知られているでしょう。私たちが抱えている課題は次のとおりです。 すべての Cookie の SameSite…

安全な Cookie とサードパーティのアドオンを使用した Opti ID

1733907532
2024-12-09 13:07:00

Opti ID は、Optimizely One スイートへのアクセスに革命をもたらし、現在、私が構築するすべての PAAS CMS Web サイトで優先される認証方法です。 ただし、常に注意が必要な注意点がいくつかあります。両方の解決策を以下に概説します。

安全なクッキー

Web サイトで実行する侵入テストでは、Cookie が Secure、HTTP Only、SameSite モード Strict に設定されていることが常に通知されます。 これらの設定は、Opti ID Cookie がサードパーティのものであるため、SameSite モードの None が必要であることがわかるまでは非常に簡単です。 CMS の認証方法として Microsoft Entra (旧称 Azure AD) を使用したことがある場合、この問題はよく知られているでしょう。

私たちが抱えている課題は次のとおりです。

  • すべての Cookie の SameSite モードを None にする必要はありません。
  • Optimizely Cookie は当社が直接管理するものではありません
  • どこにでも冗長なカスタム Cookie コードを記述するのは面倒です

次のソリューションでは、app.UseCookiePolicy(…) メソッドを使用して、すべての Cookie をセキュア、HTTP のみに設定し、デフォルトの SameSite モードはデフォルトで None に設定されています。 次に、次の Cookie 名パターンのいずれかに一致しない場合に、Cookie が Strict の SameSite モードを使用するように設定する OnAppendCookie イベントのハンドラーを提供します。

  • オイド- : これらは、Opti ID が認証に使用する Cookie です。
  • .AspNetCore : これらは、NET Core が認証に使用する Cookie です。
public static IApplicationBuilder UseSecureCookies(this IApplicationBuilder app)
{
    // Set the default cookie policy
    app.UseCookiePolicy(new CookiePolicyOptions
    {
        HttpOnly = HttpOnlyPolicy.Always,
        Secure = CookieSecurePolicy.Always,
        MinimumSameSitePolicy = SameSiteMode.None,
        OnAppendCookie = context =>
        {
            if (!context.CookieName.StartsWith("oid-") &&
                !context.CookieName.StartsWith(".AspNetCore"))
            {
                // Any cookie that is not an authentication cookie should have a SameSite mode of Strict
                context.CookieOptions.SameSite = SameSiteMode.Strict;
            }
        }
    });

    return app;
}

Opti ID を使用するためのアドオンの構成

Optimizely CMS 11 では、依存関係の設定は 初期化モジュール。 CMS 12 と .NET Core では、これらすべてが次のように処理されます。 スタートアップ.cs。一般的に使用されるアドオンの中には、startup.cs 内で使用することを目的としたサービス拡張機能が含まれているものもあります。機能を必要とするユーザーに CMS への完全な管理者アクセスを付与するのではなく、特定のロールへのアドオンへのアクセスをカスタマイズできるように、カスタム承認ポリシーを提供するところまで行っている人もいます。以下に、使用する可能性のあるいくつかのアドオンと役割を示します。

  • Stott セキュリティ – CmsAdmins、SecurityAdmins、DataAnalytics
  • Stott ロボット ハンドラー – CmsAdmins、SeoAdmins
  • NotFound ハンドラーの機能 – CmsAdmins、SeoAdmins
  • 機能サイトマップ – CmsAdmins、SeoAdmins

ここに課題があります。これらのモジュールは、Opti ID を使用する場合、指定しない限りアクセスできません。 Opti ID スキーム名 各アドオンの認可ポリシーで。

この構成を次の目的に使用します。 Stott セキュリティ アドオン 例として;このアドオンを使用すると、アドオンのデータを別のデータベースにセグメント化し、承認ポリシーを定義できるようになります。 このシナリオでは、Opti ID スキーム名がポリシーに追加されていることを確認するだけです。

public static IServiceCollection AddSecurityAddOn(this IServiceCollection services)
{
    services.AddStottSecurity(
        options =>
        {
            options.ConnectionStringName = "EPiServerDB";
        },
        authorization =>
        {
            authorization.AddPolicy(CspConstants.AuthorizationPolicy, policy =>
            {
                // Use the Opti ID scheme Name
                policy.AddAuthenticationSchemes(OptimizelyIdentityDefaults.SchemeName);
                policy.RequireRole(Roles.CmsAdmins, "SecurityAdmins");
            });
        });

    return services;
}

サービスコレクション拡張パターン

上記の両方の例では、次に従っています。 サービスコレクション拡張パターン。 このパターンを強くお勧めします。これにより、構成コードをモジュール化して、startup.cs をクリーンで理解しやすく、または再配置しやすい状態に保つことができます。

2024 年 12 月 9 日

#安全な #Cookie #とサードパーティのアドオンを使用した #Opti

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。