埋込みOracle Analytics Cloudコンテンツでのトークン認証の使用

Oracle Analytics Cloudに対してバックグラウンドで認証するが、3-Legged OAuthを使用しない場合は、トークン認証メソッドを使用します。

トークンを使用して埋込みOracle Analyticsキャンバスを認証すると、クライアントにセッションcookieは作成されません。 これにより、サード・パーティのcookieをブロックするように構成されたブラウザによって、埋込みOracle Analyticsコンテンツがブロックされることが回避されます。つまり、ブラウザを再構成したり、ホスト埋込みサイトと同じドメインを持つバニティURLを使用するようにOracle Analyticsを構成したりすることなく、コンテンツが表示されます。 この利点は、JavaScriptフレームワークの埋込みにのみ適用され、ワークブックURLを使用した埋込みには適用されません。

ノート:

埋込みOracle Analytics Cloudコンテンツでトークン認証を使用する場合、Excelへのエクスポートは正しく機能しません。

HTMLページを更新して、適切なトークン認証に対応します。 トークンの生成方法の詳細は、「Oracle Cloudでの認可の保護」を参照してください。

  1. HTMLページで、embedding.jsスクリプト参照のTOKENパラメータをtrueに設定します。
  2. トークンのセキュリティ構成タイプを指定します。 setSecurityConfig関数を使用して、トークンをアプリケーションに取得する関数を追加します。 次の例を参照してください。
機械翻訳について

この例では、APIを使用してトークンを取得します。 HTMLページでAPIを使用してトークンを取得する場合は、必要なAPIを使用可能にする必要があります。

ここで、project-pathはワークブック・リポジトリ・パスを指定します。

<!DOCTYPE html>
<html dir="ltr">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <title>Standalone DV Embed Demo Using Token</title>
     <script src="https://<instance>.analytics.ocp.oraclecloud.com/public/dv/v1/embedding/<embedding mode>/embedding.js?TOKEN=true" type="application/javascript">
     </script>
   </head>
   <body>
     <B>Standalone embedded workbook test</B>
      <div style="width: calc(50% - 40px); height: 50%; border: 1px solid black; padding: 10px;" >
         <oracle-dv
            project-path="/@Catalog/Shared Folders/Embed/Embed Samples"
            active-page="canvas"
            active-tab-id="1">
         </oracle-dv>
      </div>

      <script>
         var token = '<token from identity management API>';
         requirejs(['jquery', 'knockout', 'obitech-application/application', 'ojs/ojcore', 'ojs/ojknockout', 'ojs/ojcomposite', 'jet-composites/oracle-dv/loader'],
  	    function($, ko, application) {
               application.setSecurityConfig("token", {tokenAuthFunction:
                  function(){
                     return token;
                  }
               });
               ko.applyBindings();
            }
	);
      </script>
   </body>
</html>