Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Anchor
top
top

 

概要

Yellowfinの管理サービスは、基本的にすべてのサードパーティ製認証プロセスをYellowfinに統合することができます。主に、認証ブリッジは、Yellowfinをスタンドアロンアプリケーション、または完全統合アプリケーションとして実装する場合に使用されますが、サードパーティ製プロセスを統合する場合は、カスタムブリッジを作成しなくてはいけません。このブリッジは、サードパーティ製ソースからのユーザーログイン情報と、Yellowfinシステム内のユーザー情報を一致させます。通常、認証ソースはユーザー名を提供しますが、ユーザーを認証するために、パスワードやその他のユーザー属性情報が送信されることもあります。

既存のYellowfinユーザーとの一致が確認されると、ブリッジはシングルサインオンを実行することで、ユーザーをYellowfinにログインさせます。これは、LOGINUSER webサービス(ユーザーログインにパスワードを要求します)、またはLOGINUSERNOPASSWORDサービス(ユーザー名のみでユーザーのログインを実行する)のいずれかを使用して実行することができます。サードパーティ製ソースからパスワードを利用できることは極めて低いため、これは理想的な方法です。

ブリッジを、ユーザーのんログイン可否の判定に使用する必要はありません。ブリッジがユーザー名を受信する、ということは、対象のユーザー既に有効であることを意味します。しかし、サードパーティ製ソースに、ユーザーの認証状況を確認しなくてはいけない場合もあります。

ユーザーがYellowfinに存在しない場合は、ユーザーの自動作成を設定しなくてはいけない場合もあります。これには、サードパーティ製アプリケーションから取得する必要のある、電子メールアドレスや、ユーザーの姓名など、追加情報が必要になることもあります。ブリッジは、GETUSER、またはVALIDATEUSER webサービス関数を使用することで、ユーザーがYellowfinに存在するかを確認することができ、存在しない場合は、ADDUSER webサービスを呼び出すことで、ユーザーを作成します。複数のユーザーを一度に作成する場合は、ADDUSERS webサービス関数を呼び出します。

ブリッジプロセスの一部は、ログインプロセスの一環として、ユーザーのYellowfinロールやグループメンバーシップを変更することができます。Yellowfinが、異なるコンテンツのアクセスが変更される可能性のある製品と統合されている場合、ログインプロセス中にグループメンバーシップを更新するように要求される可能性もあります。これには、ユーザーをどのグループに追加、または削除する必要があるのかを確認するために、サードパーティ製ソースからの情報が必要になります。UPDATEUSER webサービスの呼び出しは、ユーザーロールの変更に、INCLUDEUSERINGROUP、またはEXCLUDEUSERFROMGROUPの呼び出しは、ユーザーがアクセスできるYellwfinのコンテンツを決定するグループへの追加、削除のために使用されます。

ブリッジは、様々な方法で実装することができます。以下はその一例です。

Yellowfinの一部として統合する(Yellowfinウェブアプリケーション内のJSP、サーブレット、フィルターとして)

Table of Contents
classcontents

シングルサインオンの概要

Yellowfinの管理サービスは、基本的に、Yellowfinをすべてのサードパーティ製認証プロセスに統合することができます。主に、認証bridgeは、Yellowfinをスタンドアロンアプリケーション、または完全統合アプリケーションとして実装する場合に使用されますが、サードパーティ製認証プロセスに統合する場合は、カスタムbridgeを作成しなくてはいけません。このbridgeは、サードパーティ製ソースからのユーザーログイン情報と、Yellowfinシステム内のユーザー情報を一致させます。通常、認証ソースはユーザー名を提供しますが、こちらではユーザーを認証するために、パスワードやその他ユーザー属性が送信されることもあります。


既存のYellowfinユーザーとの一致が確認されると、bridgeはシングルサインオン(SSO)を実行することで、ユーザーをYellowfinにログインさせます。これは、LOGINUSER webサービス(ユーザーログインにパスワードを要求します)、またはLOGINUSERNOPASSWORDサービス(ユーザー名のみでユーザーのログインを実行する)のいずれかを使用して実行することができます。サードパーティ製ソースからの利用可能なパスワードの取得は極めて難しいため、後者が理想的な方法です。


ユーザーのログイン可否を定義する際に、bridgeを使用しなくても構いません。bridgeがユーザー名を受信する、ということは、対象のユーザーが既に有効であることを意味します。しかし、ユーザーの認証有無をサードパーティ製ソースに確認する責任を負う場合もあります。


ユーザーがYellowfinに存在しない場合は、ユーザーの自動作成をしなくてはいけない場合があります。これには、サードパーティ製アプリケーションから取得する必要のある、電子メールアドレスや、ユーザーの姓名など、追加情報が必要になることもあります。bridgeは、GETUSER、またはVALIDATEUSER webサービス関数を使用することで、ユーザーがYellowfinに存在するかを定義することができ、存在しない場合は、ADDUSER webサービスを呼び出すことで、ユーザーを作成します。複数のユーザーを一度に作成する場合は、ADDUSERS webサービス関数を呼び出します。


bridgeプロセスの一部は、ログインプロセスの一環として、ユーザーのYellowfinロールやグループメンバーシップを変更することができます。Yellowfinが、異なるコンテンツへのアクセスを変更する可能性のある製品に統合されている場合、ログインプロセス中にグループメンバーシップを更新するように要求される可能性があります。これには、ユーザーをどのグループに追加、または削除する必要があるのかを確認するために、サードパーティ製ソースからの情報が必要になります。UPDATEUSER webサービスの呼び出しは、ユーザーロールの変更に、INCLUDEUSERINGROUP、またはEXCLUDEUSERFROMGROUPの呼び出しは、ユーザーがアクセスできるYellwfinのコンテンツを定義するグループへの追加、削除のために使用されます。


bridgeは、様々な方法で実装することができます。以下はその一例です。

  • Yellowfinの一部として統合する(Yellowfinウェブアプリケーション内のJSP、サーブレット、またはフィルターとして)
  • サードパーティ製ソースとYellowfinと通信をする、スタンドアロンアプリケーションとして統合する(GUI、コンソール、またはウェブアプリケーション)
  • サービパーティ製アプリケーションの一部として統合する

ブリッジの最適な実装場所は、環境と含まれるコンポーネントに応じて異なります。bridgeの最適な実装場所は、環境と含まれるコンポーネントに応じて異なります。


Yellowfinのコンテナ内に実装する場合、様々な実装方法が、異なる機能が取り込まれることを可能にします。JSPとサーブレットは、ユーザーが特定のURLに誘導されるようにコードを実装することができますが、フィルターはYellowfinシステムから要求された任意のURLの認証を確認します。Yellowfinのコンテナ内に実装する場合は、様々な実装方法が、異なる機能の取り込みを可能にします。JSPとサーブレットは、ユーザーが特定のURLに直接誘導されるようにコードを実装することができますが、フィルターは、Yellowfinシステムから要求された任意のURLの認証を確認します。


こちらは、Yellowfinの認証ブリッジに必要となる基礎的なプロセスです。こちらは、Yellowfinの認証bridgeに必要となる基礎的なプロセスです。

  1. cookie、ファイル、またはネットワーク接続を介して、詳細を取得する。
  2. ユーザーが既に存在しているかどうかを確認する。

...

  1. ユーザーが存在しない場合は、提供された詳細情報を使用してユーザーを作成する。

...

  1. 必要に応じて、ユーザーの詳細情報を更新する(ロールやグループ、など)。
  2. ユーザーをログインさせるために、SSOの呼び出しを実行する。

注意:認証プロバイダーがSAMLをサポートする場合は、Yellowfin SAMLブリッジを使用して、SSOを実行することもできます。

 

 

 

シングルサインオン関数

注意:認証プロバイダーがSAMLをサポートする場合は、Yellowfin SAML bridgeを使用して、SSOを実行することもできます。

シングルサインオン関数

LOGINUSER

こちらの関数は、Yellowfinに新規ユーザーアカウントを作成します。

 

リクエストパラメーター

以下の要素は、こちらのリクエストとともに渡されます。
Expand
titleLOGUINUSER
LOGINUSER

こちらのサービスは、Yellowfinに接続し、指定されたユーザーのログオントークンを取得します。ユーザーは、ユーザーID(ログオンID方法に応じて、電子メールアドレス、または他のタイプのIDになります)を使用して指定されます。このトークンがYellowfinのログオンURLとともに渡されると、認証されたユーザーのログイン画面を無効にし、即座にセッションが開始されます。

こちらの関数は、Yellowfinのヘッダーを非表示にしたり、ログイン後に特定のレポートやダッシュボードへ直接移動するなど、追加のタスクを実行するための様々なログインセッションパラメーターを渡すためにも使用されます。これらのログインセッションオプションについて、より詳細な情報は、こちらの項目を参照してください。


リクエスト要素

LOGINUSER関数は、指定されたユーザーのYellowfinへのシングルサインオンを実行します。以下の要素は、こちらのリクエストとともに渡されます。

注意:AdministrationPersonオブジェクトのコンテンツは、ログインするユーザーを定義するために使用されます。

リクエスト要素データ型説明

LoginId

String

Yellowfin Webサービスの管理者ユーザーIDです。これは、ログインIDの方法に応じて、ユーザーID、または電子メールアドレスになります。

このYellowfinアカウントは、「Yellowfin Webサービス使用権」が有効化されたロールを持ち、デフォルト(プライマリー)組織に所属していなくてはいけません。

Password

String

上記アカウントのパスワードです。

OrgId

Integer

Yellowfin内のデフォルト(プライマリー)組織IDです。常に、「1」に設定します。

Function

String

Webサービス関数です。こちらは、「ADDUSERLOGUINUSER」に設定します。

Person

AdministrationPersonユーザー作成プロセスに関する新規ユーザーの詳細のすべてを含むオブジェクトです。以下の表を参照してください。

ログインするユーザーの詳細を含むAdministrationPersonオブジェクトです。注意:以下の表を参照してください。

OrgRefString

クライアント組織内部参照IDです(こちらの設定はオプションです)。こちらは、参照されるクライアント組織に新規ユーザーを作成します。こちらを設定しない場合、新規ユーザーはデフォルト(プライマリー)組織内に作成されます。クライアント組織内部参照IDです(こちらの設定はオプションです)。こちらは、指定されたクライアント組織へユーザーをログインさせます。こちらを設定しない場合、ログイン先のクライアント組織を選択するために、ユーザーにクライアント組織選択ページが表示されます。

以下は、新規ユーザーを作成するために、「以下は、こちらの関数のために、「AdministrationPerson」オブジェクトに設定しなくてはいけない必須のパラメーターです。」オブジェクトに設定しなくてはいけない主要なパラメーターです。

AdministrationPerson 要素データ型説明

UserId

String

新規ユーザーのユーザーIDです。これは、ログインIDの方法に応じて、ユーザーID、または電子メールアドレスになります。ログインするユーザーのユーザーIDです。これは、ログインIDの方法に応じて、ユーザーID、または電子メールアドレスになります。

Password

String

新規ユーザーのパスワードです。こちらは、Yellowfinのパスワードポリシーに準拠する必要があります。

FirstName

String

新規ユーザーの名です。

LastName

String

新規ユーザーの姓です。

RoleCode

String

新規ユーザーのロールを設定します。例:YFREPORTCONSUMER

注意:リポジトリデータベースから、Yellowfinのロールコードの一覧を取得することができます。例:SQLクエリーを使用する場合:SELECT * FROM OrgRole

EmailAddress

String

新規ユーザーの電子メールアドレスです。

 

リクエストの例

以下のSOAP XMLの例は、この呼び出しに渡すことのできるパラメーターを表示しています。

新規ユーザーのパスワードです。


以下のSOAPの例は、この呼び出しに渡すことのできるパラメーターを表示しています。

Code Block
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservices.web.mi.hof.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:remoteAdministrationCall>
         <arg0>
            <loginId>admin@yellowfin.com.au</loginId>
            <password>test</password>
            <orgId>1</orgId>
            <function>ADDUSER<<function>LOGINUSER</function>    
               <person>           
     <userId>binish.sheikh@yellowfin.com.au</userId>                 <emailAddress>binish.sheikh@yellowfin.<userId>admin@yellowfin.com.au</emailAddress>userId>
                <password>admin</password>
                <firstName>Binish</firstName>
                <lastName>Sheikh</lastName>
                <roleCode>YFREPORTCONSUMER</roleCode><password>test</password>
              </person>
                  </arg0>
      </web:remoteAdministrationCall>
   </soapenv:Body>
</soapenv:Envelope>
 


応答要素

応答パラメーター

返される応答には、これらのパラメーターが含まれます。

応答要素データ型説明

StatusCode

String

Webサービス呼び出しのステータスです。値の選択肢は、以下の通りです。

  • SUCCESS
  • FAILURE
 
LoginSessionIdString
応答の例
一意のログイントークンです。こちらのトークンは、ユーザーをYellowfinへ直接誘導するために、ログインURLへ付加されます。


サービスは、今回のSOAPの例に基づき、以下の応答を返します。

Code Block
languagexml
themeEclipse
languagexml
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:remoteAdministrationCallResponse xmlns:ns2="http://webservices.web.mi.hof.com/">
         <return>
            <errorCode>0</errorCode>
            <messages>Successfully Authenticated User: admin@yellowfin.com.au</messages><loginSessionId>689bce5624f1e5a312eb5ef7801ed9fc</loginSessionId>
            <messages>Creating<messages>Successfully NewAuthenticated User: via Webservicesadmin@yellowfin.com..<au</messages>
            <messages>Creating SessionBean for webservices user...</messages>
            <messages>Looking up user...</messages>
            <messages>Web Service Request Complete</messages>
            <sessionId>8090cb7879f7d5e72eab9625772c00b5<<sessionId>c8021e27fcc2ce507ff17ec1846919a5</sessionId>
            <statusCode>SUCCESS</statusCode>
         </return>
      </ns2:remoteAdministrationCallResponse>
   </S:Body>
</S:Envelope>

 


手順

Javaの例を使用して、こちらの呼び出しを実行するための詳細な手順は、以下を参照してください。

Expand
title詳細手順
  • こちらは、Yellowfinの新規ユーザーを作成する基礎的なリクエストであり、管理ユーザーとしてのログインと、実行するWebサービスの呼び出しの指定を含みます。今回の例では、admin@yellowfin.com.auをweb サービス管理者ユーザーに使用するため、こちらの呼び出しに以下のリクエストを実行します。

    Code Block
    languagejava
    themeEclipse
    languagejava
    AdministrationServiceRequest rsr = new AdministrationServiceRequest();
     
    rsr.setLoginId("admin@yellowfin.com.au");
    rsr.setPassword("test");
    rsr.setOrgId(1);
    
    rsr.setFunction("ADDUSERLOGINUSER");

    特定のクライアント組織に新規ユーザーを作成する場合は、こちらをコードに追加します。 

  • LOGUINUSER関数は、ログインするユーザーを特定するために、AdministrationPersonオブジェクトを要求します。以下に例を示します。

    Eclipse
    Code Block
    theme
    ADDUSER関数は、新規Yellowfinユーザーの詳細を定義するために、AdministrationPersonオブジェクトを要求します。
    Code Block
    languagejava
    rsr.setOrgRef("org1");      // A new user will be added to the client org with "org1" as an organization reference ID
    orgRefパラメーターを定義しない場合は、新規ユーザーはデフォルト(プライマリー)組織内に作成されます。

 

  • themeEclipselanguagejava
    AdministrationPerson ap = new AdministrationPerson();
    新規ユーザーを作成するには、これら必須パラメーターの提供が必要です。:UserId、FirstName、LastName、RoleCode、Password、EmailAddress
    Code Block
    themeEclipse
    languagejava
    
     
    ap.setUserId("johnuser@yellowfin.smith@yellowfin.com.au");  
       // if Yellowfin authentication option is set to "email address"
    ap.setFirstNamesetPassword("Johnusertest");
    aprsr.setLastNamesetPerson("Smith");
    ap.setRoleCode("YFREPORTCONSUMER");                // Yellowfin role codes can be found performing this query against
                                                       // Yellowfin configuration database: SELECT * FROM OrgRole
    
    ap.setPassword("test");                              // Password must comply with your Yellowfin password policy
    ap.setEmailAddress("john.smith@yellowfin.com.au");

    AdministrationPersonオブジェクトのその他のパラメーターの設定はオプションです。

 

  • リクエストに「ap」オブジェクトを渡します。
    Code Block
    languagejava
    rsr.setPerson(ap);
    ap);


  • ユーザーが複数のクライアント組織に所属する場合、特定の組織を指定してログインさせることができます。例:

    Code Block
    languagejava
    themeEclipse
    rsr.setOrgRef("org1");

    この場合「org1」はクライアント組織参照IDです。この参照IDが提供されない場合、ユーザーはログインをするために、クライアント組織選択ページに誘導されます。


  • ユーザーアカウントがYellowfinに存在しない場合、webサービスエラー25が発生します:COULD_NOT_AUTHENTICATE_USER


  • LOGUINUSER関数は、setParameter()メソッドを使用することで、異なるログインセッションパラメーターを指定することができます。

    例えば、以下のコードは、user@yellowfin.com.auをYellowfinにログインさせますが、Yellowfinのヘッダーは表示されず、呼び出しを実行することで、ユーザーはタイムラインページへ誘導されます。

    Code Block
    languagejava
    themeEclipse
    String[] parameters = new String[] {"ENTRY=TIMELINE","DISABLEHEADER=TRUE"};
    rsr.setParameters(parameters);

    類似のログインセッションオプションの詳細については、こちらをクリックしてください。



  • リクエストを構成したら、呼び出しを実行します。

    Code Block
    languagejava
    AdministrationServiceResponse rs = adminService.remoteAdministrationCall(rsr);

    管理サービスを初期化します。実行方法の詳細は、こちらを参照してください。

 

  • 返される応答には、StatusCodeパラメーターが含まれます。詳細については、上記の応答パラメーターの表を参照してください。

 

完成例

以下は、ADDUSER関数の完成例です。こちらを使用するには、以下の手順に従います。

コードをコピーして、「ws_adduser
  • 管理webサービスを初期化します。実行方法の詳細は、こちらを参照してください。


  • 返される応答には、以下のパラメーターが含まれます。
    StatusCode: String - Webサービス呼び出しのステータスです。値の選択肢は、以下の通りです。

    • SUCCESS
    • FAILURE

    LoginSessionId: String - 一意のログイントークンです。こちらのトークンは、ユーザーをYellowfinへ直接誘導するために、ログインURLへ付加されます。


Anchor
LoginToken
LoginToken

ログイントークンを使用したYellowfinのリダイレクト

webサービスの呼び出し(AdministrationResponseのコンテンツ。LoginSessionId)から受信したトークンを使用することで、ユーザーをURLへ誘導することができます。

Code Block
languagejava
http://<YELLOWFIN-SERVER>/logon.i4?LoginWebserviceId=<TOKEN>

こちらのURLはYellowfinの認証画面をバイパスすることで、ユーザーをYellowfinへ直接誘導します。

Note

トークンには、有効期限があります。5分以内に使用しなくてはならず、一度使用すると、再び使用することができません。サードパーティ製アプリケーションからYellowfinへ継続して呼び出しを実行する場合は、再度LOGINUSER webサービスを呼び出さなくてはいけません。


JavaScript APIを使用したトークンの使用

SSOトークンは、組み込まれたJavaScript APIウィジェットとともに使用することができます。トークンは、スクリプトレットURLへ以下のように追加されます。

Code Block
languagejs
<script type="text/javascript" src="http://localhost/JsAPI?dashUUID=e9a6ab0a-bcb0-4fe6-9663-4dd33e58f08e&token=<TOKEN>"></script> 


ログインセッションオプション

このシングルサインオンリクエストにより作成されたセッションの機能のみを切り替える変数、またはスイッチを渡すことができます。これらのオプションは、AdministrationRequest内のパラメーター属性を介して渡すか、リダイレクトURLへ付加することで有効にすることができます。より詳細な情報は、こちらを参照してください。


完成例

以下の、LOGINUSERの例を使用することができます。こちらを使用するには、以下の手順に従います。

  1. 以下のコードをコピーして、「ws_admin_singlesignon.jsp」として保存します。
  2. root(Yellowfin/appserver/webapps/ROOT)フォルダーにファイルを配置します。
  3. 環境に応じた詳細を追加するために、ホスト、ポート番号、管理ユーザー、ユーザーを調整します。環境に応じて、ホスト、ポート番号、管理ユーザー、ログインするユーザーの詳細を調整します。
  4. インターネットブラウザから、「http://<host>:<port>/ws_admin_addusersinglesignon.jsp」を実行します。


Code Block
 code
language
java
themeEclipse
languagejava
<%           
/*              ws_adduserws_admin_singlesignon.jsp         */       */  %>    
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="com.hof.util.*, java.util.*, java.text.*" %>
<%@ page import="com.hof.web.form.*" %>
<%@ page import="com.hof.mi.web.service.*" %>
<%
String url = "http://localhost:8080";         //provide your Yellowfin URL
 
AdministrationServiceService s_adm = new AdministrationServiceServiceLocator("localhost",8080, "/services/AdministrationService", false);        // adjust host and port number
 
 
AdministrationServiceSoapBindingStub adminService = (AdministrationServiceSoapBindingStub) s_adm.getAdministrationService();
 
AdministrationServiceRequest rsr = new AdministrationServiceRequest();
 
 
rsr.setLoginId("admin@yellowfin.com.au");          // provide your Yellowfin webwebservices service admin account
rsr.setPassword("test");                            // change thisto tobe the password of the account above
account
rsr.setOrgId(1);
rsr.setFunction("ADDUSERLOGINUSER");
 
 
AdministrationPerson ap = new AdministrationPerson();
 
 
ap.setUserId("johnuser@yellowfin.smith@yellowfin.com.au");      // If Yellowfin authentication option is set to "email address"
ap.setFirstName("John");
ap.setLastName("Smith");
ap.setRoleCode("YFREPORTCONSUMER");                // Yellowfinprovide roleexisting codesYellowfin canuser beto found performing this query againstlogin
ap.setPassword("usertest");                             // password of the user above
 
rsr.setPerson(ap);
 
String[] parameters = new String[] {"ENTRY=TIMELINE","DISABLEHEADER=TRUE"};
rsr.setParameters(parameters);
 
AdministrationServiceResponse rs = adminService.remoteAdministrationCall(rsr);
 
// Yellowfin
configurationString database:token SELECT= *"";
FROM OrgRole
 
ap.setPasswordif ("test");  SUCCESS".equals(rs.getStatusCode()) ) {
               token = rs.getLoginSessionId();
      // Password must comply with your Yellowfin password policy apresponse.setEmailAddresssendRedirect("john.smith@yellowfin.com.au");
rsr.setPerson(apurl + "/logon.i4?LoginWebserviceId=" + token);
} else {
 AdministrationServiceResponse rs = adminService.remoteAdministrationCall(rsr);   if ("SUCCESS".equals(rs.getStatusCode()) ) {     out.write("SuccessSingle Sign on Failure");
} else {     out.write("Failure");     out.write(" Code: " + rs.getErrorCode()) return;
}
%>

 

 

 

...


LOGINUSERNOPASSWORD

Expand
titleLOGINUSERNOPASSWORD

LOGINUSERNOPASSWORD webサービスは、ユーザー名のみを使用して、ユーザーをログインさせることができます。


関数の有効化

こちらの関数を有効化するには、Yellowfinデータベースの構成テーブルに、追加のパラメーターを設定しなくてはいけません。

IpOrgConfigTypeCodeConfigCodeConfigData
1SYSTEMSIMPLE_AUTHENTICATIONTRUE


注意:データベースへの変更を反映するために、Yellowfinを再起動しなくてはいけない場合があります。

こちらの設定がYellowfinのデータベースに追加されなかった場合は、webサービスエラー26:UNSECURE_LOGIN_NOT_ENABLEDが発生します。


こちらの呼び出しのパラメーターオプションは、LOGINUSERのものと同様です。例:

  • LOGUINUSERNOPASSWORDにAdministrationRequest.Functionが設定されます。
  • AdministrationPerson.Passwordは空白にすることができます。