Sign-In Widgetが利用するサードパーティクッキー
Administration
Okta Classic Engine
Directories
Okta Identity Engine
SDKs & Libraries

概要

Chromeによるサードパーティクッキーの廃止は、アーキテクチャおよび導入モデルに応じて、Sign-In Widgetのエクスペリエンスにさまざまな形で影響を与える可能性があります。OktaはGoogleと提携して、Cookie廃止からOktaのドメインを除外し、オリジントライアルトークンを利用して、提案された恒久的なソリューションをお客様が実装するための時間を確保しています。

さらに、管理者またはユーザーはChromeポリシーを更新して、サードパーティクッキーを許可し、Chromeで促進された1%クッキー廃止テストの対象からブラウザーを除外できます。このオプションを選択するには、Googleのヘルプ記事「Set the policies」セクションおよび「Allow or restrict all third-party cookies」アコーディオンメニューの手順に従ってください。
 

トライアルトークンスクリプト

この記事の中で、Oktaは、プログラムでメタタグをコンシューマーのDOMに追加するスクリプトを含む5つの異なるJavaScriptファイルを提供しています。各スクリプトは、それぞれのOktaドメインのトライアルトークンを利用します。スクリプトを埋め込む方法の詳細については、以下を参照してください。

 

ドメインサンプルスクリプト
https://oktapreview.com
<script src="REPLACE_WITH_YOUR_OKTA_DOMAIN/assets/js/third-party-cookie-deprecation/okta-preview-origin-trial.js" integrity="sha512-a84DxB2xXBw0XSoc/EEUdBgregdmTJAjreb5vBDxH5AKDgBQ+PA9K1sWqnASKbPow13xEx32g0q+UL2gLbVqWg==" crossorigin="anonymous" ></script>
https://okta.com
<script src="REPLACE_WITH_YOUR_OKTA_DOMAIN/assets/js/third-party-cookie-deprecation/okta-origin-trial.js" integrity="sha512-qF8AFYrfELeLXx+0XpfYrACP8JiU2Gz4YWW7z4BoKlGHdAtHhjkrCGr+t1k0aDuN6ghwdiy/e1g63d8DMBQ06g==" crossorigin="anonymous" ></script>
https://okta-emea.com
<script src="REPLACE_WITH_YOUR_OKTA_DOMAIN/assets/js/third-party-cookie-deprecation/okta-emea-origin-trial.js" integrity="sha512-sfBBhK5MhvH9llf/BvisWnazhYwKs1vftoapXvmDouWYJuBpaC0jCWkkKHqJ+xC9dT2UhRRqQcrrnaxMW/4OQA==" crossorigin="anonymous" ></script>
https://okta-gov.com
<script src="REPLACE_WITH_YOUR_OKTA_DOMAIN/assets/js/third-party-cookie-deprecation/okta-gov-origin-trial.js" integrity="sha512-RZ7Y1tzJzR+Hb3RBEqjMkgftWEKiXIaYaZpAy3GYf6UsbmGJ6+XeoEoN/UeTZ/YWcAM39E/x5HRwHFJKOV9N/Q==" crossorigin="anonymous" ></script>
https://okta.mil
<script src="REPLACE_WITH_YOUR_OKTA_DOMAIN/assets/js/third-party-cookie-deprecation/okta-mil-origin-trial.js" integrity="sha512-Oi4ujxsYu27ehMyhyz1TnyNJzkx/p5MpNJGfVB0LXizryXK80MxiMIg/wBdY+KbHXjpXDVm0SUObGDBji4amIg==" crossorigin="anonymous" ></script>

 

上記のサンプルスクリプトの主要コンポーネント

SRC:

scriptタグのsrc属性は、対応するトライアルトークン(ファイル名のドメインと一致する)を持つメタタグを生成するJavaScriptファイル(Oktaサーバーでホスト)を指します。
 

INTEGRITY:

ここでのintegrity属性は、サブリソースの整合性(SRI)を表しています。これは、ブラウザーが(CDNなどから)フェッチしたリソースが予期しない操作なしに配信されたことを検証できるようにするセキュリティ機能です。これにより、当社が提供するJSアセットが悪意のあるアクターによって変更されていないという安心感をお客様に提供できます。SRIの詳細については、こちらをご覧ください。
 

CROSSORIGIN:

crossorigin属性はCORSをサポートし、要素がcross-origin要求を処理する方法を定義します。anonymous値は、要求がCORSヘッダーを使用し、資格情報フラグがsame-originに設定されていることを示します。この属性の詳細については、こちらをご覧ください。

 

影響の判断

Sign-In Widgetとサードパーティクッキーの廃止に関する影響のレベルは、エクスペリエンスのカスタマイズ方法によって異なる可能性があります。ユーザーが影響を受けるのは、セッションクッキーを使用してセッションが延長された場合のみです。

たとえば、一部のお客様は、ユーザーの認証済みセッションを延長(トークン更新とも呼ばれます)して、セッションの有効期限が切れるたびに再認証を求めないようにしたいと考えています。これを行うには、クエリパラメーターprompt=noneを使用して/authorizeエンドポイントに要求を送信します。これにより、ユーザーのセッションが更新され、ユーザーに再認証が求められるのを回避できます(サンプル要求についてはこちらを参照してください)。この要求はアプリを介して手動で開始されますが、AuthJS SDKを使用してこの要求を開始することもできます(Sign-In Widgetにバンドルされています)。これは、ブラウザーに保存されているサードパーティクッキーに依存します。

埋め込み(自己ホスト)Sign-In Widgetのシナリオでは、Admin Consoleの「System Log」ツールを使用して次のクエリを実行します。

debugContext.debugData.requestUri eq "/oauth2/v1/authorize" and debugContext.debugData.Url co "prompt=none" and debugContext.debugData.responseMode eq "okta_post_message"


クエリ

これは、OIDCアプリがこの要求を開始しているかどうかを判断できる「アクター」を示す必要があります。

再認証を頻繁に求められないようにセッションを延長する別の例としては、Okta Sessions APIを利用し、クッキーを使用してユーザーの現在のセッションを更新することが挙げられます。アプリケーションがこのAPIに依存している場合は、Googleのサードパーティクッキーの段階的廃止による影響を回避するために、できるだけ早く移行してください。OrganizationでこのAPIが利用されているかどうかわからない場合は、以下のSystem Logクエリを使用して使用状況を検索してください。

debugContext.debugData.requestUri sw "/api/v1/sessions/me"


クエリ結果

Oktaでは、これらのクッキー廃止の影響を軽減するために、リフレッシュトークンを使用するようにアプリケーションを更新することをお勧めします。Admin Consoleで、アプリケーションへの「リフレッシュトークン」の付与が有効になっていることを確認し、上記のリンクのサンプルリクエストに従って、アクセストークンを正常に更新するために必要なクエリパラメーターがあることを確認します。詳細については、サポートされているエンドポイントへの移行方法について、開発ブログの手順を参照してください。

リフレッシュトークン

 

上記の変更を行うのにさらに時間が必要な場合は、以下の手順に従って、オリジントライアルトークンスクリプトをアプリケーションに埋め込みます。これにより、それぞれのOrgで年末までクッキーの廃止が免除されます。


サンプルスクリプトの使用方法のカスタマイズ

自己ホストSign-In Widget導入モデル(独自のドメインを使用)を利用する場合、アプリケーションにスクリプトを埋め込む方法は以下のとおりです。

 
  1. Oktaドメイン(Sign-In Widget構成で使用されるbaseUrlとも呼ばれます)を見つけます。
  2. ドメイン(okta.com、okta-emea.com、okta.milなど)に基づいて、適切なトライアルトークンスクリプトを選択します。上記の表を使用して、一致するドメインを見つけ、スクリプトを選択します。
  3. スクリプトのsrcドメインを、baseUrl/Oktaドメインを使用するように変更します。 
  4. コードベース/ソースコードの<head>セクションにスクリプトを追加します。以下のサンプルを参照してください。
    1. 注:IEの互換性がないために、アプリのコンシューマーがIE11を使用している場合は、ブラウザーがIEでない場合にトライアルトークンスクリプトを条件付きで追加する方法を示すサンプルを参照してください。

 

<html> <head> <!-- お客様がインポートしたスクリプトおよびその他のcss --> <!-- トライアルトークンスクリプトをここに追加 --> <script src="https://REPLACE_WITH_YOUR_OKTA_DOMAIN/assets/js/third-party-cookie-deprecation/okta-origin-trial.js" integrity="sha512-qF8AFYrfELeLXx+0XpfYrACP8JiU2Gz4YWW7z4BoKlGHdAtHhjkrCGr+t1k0aDuN6ghwdiy/e1g63d8DMBQ06g==" crossorigin="anonymous"></script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head> <body> <!-- Sign-in Widgetインポート/アセット/モジュール --> </body> </html>

 


ブラウザーがInternet Explorerでない場合にオリジントライアルトークンスクリプトを条件付きで含める例

<html> <head> <!-- お客様がインポートしたスクリプトおよびその他のcss --> <!-- トライアルトークンスクリプトをここに追加 --> <script type="text/javascript"> function isIE() { var ua = window.navigator.userAgent.toLowerCase(); var msie = ua.indexOf('msie'); // IE 10 or older var trident = ua.indexOf('trident'); //IE 11 return (msie >= 0 || trident >= 0); } if(!isIE()){ document.write('<script src="https://REPLACE_WITH_YOUR_OKTA_DOMAIN/assets/js/third-party-cookie-deprecation/okta-origin-trial.js" integrity="sha512-qF8AFYrfELeLXx+0XpfYrACP8JiU2Gz4YWW7z4BoKlGHdAtHhjkrCGr+t1k0aDuN6ghwdiy/e1g63d8DMBQ06g==" crossorigin="anonymous">\<\/script\>'); } </script> </head> <body> <!-- Sign-in Widgetインポート/アセット/モジュール --> </body> </html>


使用するスクリプトのファイル名は、baseUrl(Oktaドメインとも呼ばれます)によって異なります。この導入モデルを利用しているお客様は、アプリケーションでウィジェットを初期化するために使われるbaseUrlに精通している必要があります(埋め込みフローのドキュメントを参照してください)。

たとえば、Oktaドメインがhttps://acme.okta.comの場合、使用する必要がある対応するスクリプトはokta-origin-trial.js

です。Oktaドメインがhttps://auth.acme.okta-emea.comの場合、使用する必要がある対応するスクリプトはokta-emea-origin-trial.jsです。

 

ADSSO/カスタムドメイン(Oktaでホスト)のシナリオ

長期的な解決策は、CookiesAllowedforURLsを有効にし、エージェントレスデスクトップSSOが構成されているOkta Orgの値を同じ形式(<myorg>.kerberos.<okta|oktapreview|okta-emea>.com)で追加することです。たとえば、カスタムドメインがacme-auth.comの場合、構成はacme-auth.kerberos.<okta|oktapreview|okta-emea>.com

のようにフォーマットされます。ADSSOでカスタムドメインを使用していて、短期的な修復としてトライアルトークンを希望する場合は、カスタムコードエディターを使用して、HTMLの<head>セクションにスクリプトを埋め込みます。以下のサンプルを参照してください。

注:ユーザーがInternet Explorerを使用する場合は、条件付きでスクリプトを追加する例を利用してください。 

... <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="robots" content="noindex,nofollow" /> <!-- テーマから生成されたスタイル --> <link href="{{themedStylesUrl}}" rel="stylesheet" type="text/css"> <!-- テーマのファビコン --> <link rel="shortcut icon" href="{{faviconUrl}}" type="image/x-icon"/> <title>{{pageTitle}}</title> {{{SignInWidgetResources}}} <style nonce="{{nonceValue}}"> #login-bg-image-id { background-image: {{bgImageUrl}} } </style> <script src="https://okta.com/assets/js/third-party-cookie-deprecation/okta-origin-trial.js" integrity="sha512-qF8AFYrfELeLXx+0XpfYrACP8JiU2Gz4YWW7z4BoKlGHdAtHhjkrCGr+t1k0aDuN6ghwdiy/e1g63d8DMBQ06g==" crossorigin="anonymous"></script> </head> ...

ブラウザーがInternet Explorerでない場合にオリジントライアルトークンスクリプトを条件付きで含める例

... <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="robots" content="noindex,nofollow" /> <!-- テーマから生成されたスタイル --> <link href="{{themedStylesUrl}}" rel="stylesheet" type="text/css"> <!-- テーマのファビコン --> <link rel="shortcut icon" href="{{faviconUrl}}" type="image/x-icon"/> <title>{{pageTitle}}</title> {{{SignInWidgetResources}}} <style nonce="{{nonceValue}}"> #login-bg-image-id { background-image: {{bgImageUrl}} } </style> <!-- トライアルトークンスクリプトをここに追加 --> <script type="text/javascript"> function isIE() { var ua = window.navigator.userAgent.toLowerCase(); var msie = ua.indexOf('msie'); // IE 10 or older var trident = ua.indexOf('trident'); //IE 11 return (msie >= 0 || trident >= 0); } if(!isIE()){ document.write('<script src="https://okta.com/assets/js/third-party-cookie-deprecation/okta-origin-trial.js" integrity="sha512-qF8AFYrfELeLXx+0XpfYrACP8JiU2Gz4YWW7z4BoKlGHdAtHhjkrCGr+t1k0aDuN6ghwdiy/e1g63d8DMBQ06g==" crossorigin="anonymous">\<\/script\>'); } </script> </head> ...


この場合、トライアルトークンスクリプトのドメインはカスタムドメインと一致する必要があります。たとえば、カスタムドメインがhttps://auth.acme.comで、デフォルトのブランドOktaドメインがhttps://okta.comの場合、使用するスクリプトURLはhttps://auth.acme.com/assets/js/third-party-cookie-deprecation/okta-origin-trial.js

です。別の例:カスタムドメインがhttps://auth.atko.comで、デフォルトのブランドOktaドメインがhttps://okta-emea.comの場合、使用するスクリプトURLはhttps://auth.atko.com/assets/js/third-party-cookie-deprecation/okta-emea-origin-trial.jsです。

関連資料

 

Recommended content

No recommended content found...