こちらのサービスは、Yellowfinに接続し、指定されたユーザーのログオントークンを取得します。ユーザーは、ユーザーID(ログオンID方法に応じて、電子メールアドレス、または他のタイプのIDになります)を使用して指定されます。このトークンがYellowfinのログオンURLとともに渡されると、認証されたユーザーのログイン画面を無効にし、即座にセッションが開始されます。 リクエスト要素LOGINUSER関数は、指定されたユーザーのYellowfinへのシングルサインオンを実行します。以下の要素は、こちらのリクエストとともに渡されます。 注意:AdministrationPersonオブジェクトのコンテンツは、ログインするユーザーを定義するために使用されます。 リクエスト要素 | データ型 | 説明 | LoginId | String | Yellowfin Webサービスの管理者ユーザーIDです。これは、ログインIDの方法に応じて、ユーザーID、または電子メールアドレスになります。 このYellowfinアカウントは、「Yellowfin Webサービス使用権」が有効化されたロールを持ち、デフォルト(プライマリー)組織に所属していなくてはいけません。 | Password | String | 上記アカウントのパスワードです。 | OrgId | Integer | Yellowfin内のデフォルト(プライマリー)組織IDです。常に、「1」に設定します。 | Function | String | Webサービス関数です。こちらは、「LOGUINUSER」に設定します。 | Person | AdministrationPerson | ログインするユーザーの詳細を含むAdministrationPersonオブジェクトです。注意:以下の表を参照してください。 | OrgRef | String | クライアント組織内部参照IDです(こちらの設定はオプションです)。こちらは、参照されるクライアント組織に新規ユーザーを作成します。こちらを設定しない場合、ログイン先のクライアント組織を選択するために、ユーザーにクライアント組織選択ページが表示されます。 |
以下は、こちらの関数のために、「AdministrationPerson」オブジェクトに設定しなくてはいけない主要なパラメーターです。 AdministrationPerson 要素 | データ型 | 説明 | UserId | String | ログインするユーザーのユーザーIDです。これは、ログインIDの方法に応じて、ユーザーID、または電子メールアドレスになります。 | Password | String | 新規ユーザーのパスワードです。 |
以下のSOAPの例は、この呼び出しに渡すことのできるパラメーターを表示しています。 Code Block |
---|
| <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>LOGINUSER</function>
<person>
<userId>admin@yellowfin.com.au</userId>
<password>test</password>
</person>
</arg0>
</web:remoteAdministrationCall>
</soapenv:Body>
</soapenv:Envelope> |
応答要素返される応答には、これらのパラメーターが含まれます。 応答要素 | データ型 | 説明 | StatusCode | String | Webサービス呼び出しのステータスです。値の選択肢は、以下の通りです。 | LoginSessionId | String | 一意のログイントークンです。こちらのトークンは、ユーザーをYellowfinへ直接誘導するために、ログインURLへ付加されます。 |
サービスは、今回のSOAPの例に基づき、以下の応答を返します。 Code Block |
---|
| <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>
<loginSessionId>689bce5624f1e5a312eb5ef7801ed9fc</loginSessionId>
<messages>Successfully Authenticated User: admin@yellowfin.com.au</messages>
<messages>Web Service Request Complete</messages>
<sessionId>c8021e27fcc2ce507ff17ec1846919a5</sessionId>
<statusCode>SUCCESS</statusCode>
</return>
</ns2:remoteAdministrationCallResponse>
</S:Body>
</S:Envelope> |
手順Javaの例を使用して、こちらの呼び出しを実行するための詳細な手順は、以下を参照してください。 Expand |
---|
| ユーザーが複数のクライアント組織に所属する場合、特定の組織を指定してログインさせることができます。例:
Code Block |
---|
| rsr.setOrgRef("org1"); |
この場合「org1」はクライアント組織参照IDです。この参照IDが提供されない場合、ユーザーはログインをするために、クライアント組織選択ページに誘導されます。 ユーザーアカウントがYellowfinに存在しない場合、web ユーザーアカウントがYellowfinに存在しない場合、webサービスエラー25が発生します:COULD_NOT_AUTHENTICATE_USER LOGUINUSER関数は、setParameter()メソッドをしようすることで、異なるログインセッションパラメーターを指定することができます。 例えば、以下のコードは、user@yellowfin.com.auをYellowfinにログインさせますが、Yellowfinのヘッダーは表示されず、呼び出しを実行することで、ユーザーはタイムラインページへ誘導されます。
Code Block |
---|
| ap.setUserId("john.smith@yellowfin.com.au"); // if Yellowfin authentication option is set to "email address"
ap.setFirstName("John");
ap.setLastName("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オブジェクトのその他のパラメーターの設定はオプションです。
|
ログイントークンを使用したYellowfinのリダイレクトwebサービスの呼び出し(AdministrationResponseのコンテンツ。LoginSessionId)から受信したトークンを使用することで、ユーザーをURLへ誘導することができます。 Code Block |
---|
| | rsr.setPerson(ap); | リクエストを構成したら、呼び出しを実行します。http://<YELLOWFIN-SERVER>/logon.i4?LoginWebserviceId=<TOKEN>
こちらのURLはYellowfinの認証画面をバイパスすることで、ユーザーをYellowfinへ直接誘導します。 Note |
---|
トークンには、有効期限があります。5分以内に使用し、一度使用すると、再び使用することができません。サードパーティ製アプリケーションからYellowfinへ連続する呼び出しを実行する場合は、再度LOGINUSER webサービスを呼び出さなくてはいけません。 |
JavaScript APIを使用したトークンの使用 SSOトークンは、組み込まれたJavaScript APIウィジェットをともに使用することができます。トークンは、スクリプトレットURLへ以下のように追加されます。 Code Block |
---|
| java | AdministrationServiceResponse rs = adminService.remoteAdministrationCall(rsr); | 管理サービスを初期化します。実行方法の詳細は、こちらを参照してください。 - 返される応答には、StatusCodeパラメーターが含まれます。詳細については、上記の応答パラメーターの表を参照してください。
完成例以下は、ADDUSER関数の完成例です。こちらを使用するには、以下の手順に従います。 コードをコピーして、「ws_adduser<script type="text/javascript" src="http://localhost/JsAPI?dashUUID=e9a6ab0a-bcb0-4fe6-9663-4dd33e58f08e&token=<TOKEN>"></script> |
ログインセッションオプション このシングルサインオンリクエストにより作成されたセッションの機能のみを切り替える変数、またはスイッチを渡すことができます。これらのオプションは、AdministrationRequest内のパラメーター属性を介して渡すか、リダイレクトURLへ付加することで有効にすることができます。より詳細な情報は、こちらを参照してください。 完成例以下は、LOGINUSERの例を使用することができます。こちらを使用するには、以下の手順に従います。 - 以下のコードをコピーして、「ws_admin_singlesignon.jsp」として保存します。
- root(Yellowfin/appserver/webapps/ROOT)フォルダーにファイルを配置します。
- 環境に応じた詳細を追加するために、ホスト、ポート番号、管理ユーザー、ユーザーを調整します。環境に応じて、ホスト、ポート番号、管理ユーザー、ログインするユーザーの詳細を調整します。
- インターネットブラウザから、「http://<host>:<port>/ws_admin_addusersinglesignon.jsp」を実行します。
Code Block |
---|
| <%
/* ws_admin_addusersinglesignon.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("john.smith@yellowfinuser@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.setPassword("test"); "";
if ("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;
}
%> |
|