windowオブジェクトにEOClientSecurityKitグローバルオブジェクトがインスタンス化されます。開発者はこのオブジェクトを通じてSDKインターフェースにアクセスし、さらに設定や制御を行うことができます。/checkoutなど)にのみ適用することができます。さらに、必要に応じてCookieやリクエストヘッダーなどをマッチングさせ、柔軟性を高めることもできます。リクエストが設定されたすべての条件に一致した場合にのみ、スクリプト注入が行われます。www.buyexample.com配下のすべてのHTMLページにアクセスするブラウザおよびWebViewクライアントに対して、デフォルトでセキュリティ認証を実行し、インターフェースに認証ポリシーを展開できるようにします。
JavaScriptを注入を選択します。1つのリクエストが複数のルールに一致する場合、優先度が高い(数値が低い)ルールの処理方法が適用されます。
<script>タグを対象HTMLページの<head>セクション(または<body>終了タグの前)に直接挿入してください:src属性が正しいSDK配布アドレスを指していることを確認してください。<script src="https://cdnstatic.tencentcs.com/edgeone/security/client-attestation/eoclientsecuritykit.min.js"></script>
<script>タグの読み込み実行後、eoclientsecuritykit.min.jsが動作し、ページ内でAJAX(XHRおよびFetch API)を通じて発行されたリクエストをインターセプトします。SDKは認証チャレンジを処理し、認証トークンを取得して、後続のリクエストに自動的に付加することで、APIエンドポイントを保護します。<span>、<p>、<div>、<section>など、さまざまな一般的なコンテナ要素をサポートしています。SDKは、以下の優先順位に基づいて認証UIのレンダリング位置を決定します:window.EOClientSecurityKit.setClientAttestationDOMSelectorProvider(elementSelectorFunc) APIを呼び出して要素セレクタ関数を割り当てることができます。SDKが認証UIをレンダリングする必要がある場合、この関数が呼び出されます。elementSelectorFuncは、以下の2つの方法で定義できます:#valid-dom-id)、クラス名(.valid-dom-class)、またはより複雑な子孫セレクタ(#valid-dom-id .valid-dom-class)などのCSSセレクタ文字列を直接返します。SDKはこのセレクタを使用してページ要素を検索し、UIをレンダリングします。// 要素レンダリングコールバックのセレクタプロトタイプtype ClientAttestationDOMSelector = () => string | Promise<string>// 例1:要素IDを使用して要素を指定します(同期方式)const tmpProviderSyncId: ClientAttestationDOMSelector = () => {return \\'#valid-dom-id\\'; // 要素IDセレクタを返します};// 例2:非同期関数を使用して要素を指定します(要素を動的に作成)const tmpProviderAsync: ClientAttestationDOMSelector = () => {return new Promise((resolve, reject) => {setTimeout(() => {const id = Math.random().toString(36).substring(2, 15);const iframe = document.createElement(\\'div\\');iframe.id = id;document.body.appendChild(iframe);resolve(`body > #${id}`); // セレクタ文字列として解析します}, 500);});};// コールバック関数を設定します(いずれかの例を選択して設定します)// window.EOClientSecurityKit.setClientAttestationDOMSelectorProvider(tmpProviderSyncId);// window.EOClientSecurityKit.setClientAttestationDOMSelectorProvider(tmpProviderAsync);
setClientAttestationDOMSelectorProviderを通じてセレクタコールバック関数が割り当てられていない場合、SDKはページ内で最初にIDがeo-client-attestationであるHTML要素を検索します。見つかった後、その要素は認証UIのレンダリングに使用されます。この方法は、開発者が認証UIの表示領域を確保するための簡単な規約を提供します。<div id="eo-client-attestation"></div> <!-- レンダリング領域を確保するための要素 -->
div 要素をHTMLページの適切な位置に配置し、必要に応じてスタイルをカスタマイズして、認証UIがページ全体のデザインスタイルと一致するようにできます。<body> Tagの末尾に認証UIをレンダリングするための新しいHTML要素を動的に作成します。<body> の末尾に固定されるため、そのスタイルとレイアウトはページデザインと調和しない可能性があり、他の要素によって遮られる可能性もあります。そのため、強く推奨します開発者が認証UIのレンダリング専用の要素を積極的に割り当てて指定し(オプション1またはオプション2を使用)、認証UIの表示位置、サイズ、スタイルを正確に制御することで、より優れたユーザーエクスペリエンスを提供してください。window.EOClientSecurityKit.setCustomHostnameScope(customScope) APIを呼び出すことで、どのドメインのリクエストに対して自動認証を有効にするかを正確に指定できます。これにより、SDKが無関係なサードパーティリクエストを遮断することを防ぎ、潜在的なCORSの問題を効果的に回避できます。const hostnameScope = ["*.example.com", // ワイルドカードによるサブドメインマッチングをサポートします。"a.test.com", // 特定ドメインを正確にマッチングします。"[1-9].test.com" // 正規表現によるマッチングをサポートします。];window.EOClientSecurityKit.interceptor.setCustomHostnameScope(hostnameScope);
window.EOClientSecurityKit.interceptor.clearCustomHostnameScope();
www.your-app.com であるとします。このアプリケーションは、api.your-app.com にEdgeOneによって保護されたAPIリクエストを送信するだけでなく、サードパーティの統計サービスも統合しており、このサービスは analytics.third-party.com にデータ報告リクエストを送信します。EdgeOneクライアント認証SDKは、自動注入方式によってアプリケーションのページに統合されています。XMLHttpRequest および fetch API リクエストをインターセプトしようとし、これらのリクエストのリクエストヘッダーに EO-Attest-Token を自動的に付加する可能性があります。アプリケーションが analytics.third-party.com にデータ報告リクエストを送信する際、そのリクエストにも EO-Attest-Token が付加されており、analytics.third-party.com のサーバーが EO-Attest-Token のようなカスタムリクエストヘッダーを許可するように構成されていない場合、ブラウザはクロスオリジンセキュリティポリシー(CORS)によってそのリクエストをブロックします。Access-Control-Request-Headers フィールドが含まれており、実際のリクエストで送信されるカスタムリクエストヘッダー(EO-Attest-Token を含む)が一覧表示されます。analytics.third-party.com のサーバーがそのCORS設定で EO-Attest-Token を明示的に許可していない場合、サーバーはそのプリフライトリクエストを拒否し、プリフライトが失敗します。window.EOClientSecurityKit.interceptor.setCustomHostnameScope() APIを使用してSDKのインターセプト範囲を正確に制限し、自分のドメイン(api.your-app.com)配下のリクエストにのみ有効にして、サードパーティドメインへのリクエストを無視する必要があります。// SDKの読み込みと初期化後に呼び出します。window.EOClientSecurityKit.interceptor.setCustomHostnameScope([「api.your-app.com」、// お客様のAPIドメインに対してのみ自動認証を有効にします。「www.your-app.com」 // メインサイトでも認証が必要な場合は、追加できます。]);// この時点で、SDKはanalytics.third-party.comへのリクエストにEO-Attest-Tokenを追加しなくなります。// サードパーティ統計サービスのデータ報告リクエストは正常に送信され、CORS制限の対象外となります。
api.your-app.com と www.your-app.com へのリクエストに対してのみインターセプトとトークン付加を行います。アプリケーションが analytics.third-party.com にリクエストを送信する際、SDKはそのリクエストに EO-Attest-Token を追加しなくなります。リクエストにサードパーティサーバーが認識できないカスタムリクエストヘッダーが含まれなくなるため、CORSプリフライトリクエストは成功し、実際のリクエストも正常に送信されます。これにより、サードパーティサービスとEdgeOne SDKは同一ページ内で調和して共存し、互いに干渉しません。フィードバック