Oracle® Fusion Middleware Oracle Access Management開発者ガイド 11gリリース2 (11.1.2) B69537-02 |
|
![]() 前 |
![]() 次 |
この章では、iOSクライアントSDKを使用してモバイル・サービス・アプリケーションを開発する方法について説明します。このSDKは、iOS上でセキュアなモバイル・アプリケーションを開発するためのセキュリティ・レイヤーとして機能します。すべてのネイティブなiOSアプリケーションは、Mobile and Socialを使用するために、このSDKを実装する必要があります。この章の内容は次のとおりです。
このSDK (oamms_sdk_for_ios.zip
)は、Oracle Access Management配布パッケージに含まれており、Oracle Technical Network (OTN) Webサイトからダウンロードすることもできます。
この開発者ガイドの他に、SDKでは、HTML形式のAPIドキュメントが提供されています。APIクラス、インタフェース、コンストラクタ、メソッドおよびフィールドの説明については、APIドキュメントを参照してください。
IDM Mobile iOSクライアントSDKは、静的ライブラリとして提供されます。次の3つのモジュールが含まれます。
認証モジュール: ユーザー、デバイスおよびアプリケーションのかわりに認証リクエストを処理します。
ユーザー・ロール・モジュール: ユーザーおよびアプリケーションが構成されたアイデンティティ・ストアからユーザーおよびグループ詳細を取得できるようにするユーザー・プロファイル・サービスを提供します。
セキュア・ストレージ・モジュール: iOS Keychain機能を使用して重要なデータを保存および取得するためのAPIを提供します。
注意: iOSモバイル・デバイス用のアプリケーションを開発するには、Mac OS X Snow Leopard以降を実行しているIntelベースのMacにXcode IDE (統合開発環境)がインストールされている必要があります。 詳細は、iOS Dev CenterのWebサイトを参照してください。 |
XCode環境を設定するには、次の手順に従ってください。
次の手順に従って、XCodeにlibIDMMobileSDK.a
を追加します。
使用している開発環境にlibIDMMobileSDK.a
をダウンロードし、それをプロジェクト・フォルダに追加します。
XCodeを起動して、プロジェクトを開きます。
プロジェクトをクリックして選択し、ターゲットをクリックして、「Build Phases」タブをクリックします。
「Link Binary With Libraries」を開き、「+」ボタンをクリックします。
「Other」を選択し、「libIDMMobileSDK.a
」を選択します。
PublicHeaders.zip
ファイルおよびPublicResources.zip
ファイルをダウンロードし、解凍します。
PublicHeaders.zip
アーカイブには、IDM Mobile SDKヘッダー・ファイルが含まれています。
PublicResources.zip
アーカイブには、IDM Mobile SDKリソース・バンドルが含まれています。
「Add Files to Your-Project-Name」を選択し、PublicHeaders.zip
のコンテンツおよびPublicResources.zipをプロジェクトに追加します。
IDM Mobile iOSクライアントSDKを使用してコーディングを開始できるようになりました。
重要: プロジェクトをリンクする前に、プロジェクトに
背景情報とプロジェクトにフラグを追加する方法については、次のページを参照してください。 |
この項では、Mobile and Socialサーバーを使用して認証する方法について説明するサンプル・コードを提供します。
この項のサンプル・コードは、JWTAuthentication (JSON Web Token Authentication)サービス・タイプをサポートしています。サービス・プロバイダの構成方法の詳細は、『Oracle Fusion Middleware Oracle Access Management管理者ガイド』のモバイル・サービスの構成に関する項を参照してください。
手順1: 必須オブジェクトの初期化とエンドポイントの宣言
次のようにOMMobileSecurityService
クラスを作成し、必要とされるMobile and Socialサーバーの詳細を提供することにより初期化します。
OMMobileSecurityService *mss = [[OMMoblieSecurityService alloc] initWithURL: mobileSocialServerURL] appName: applicationName domain: domainName delegate: self];
initWithURL
引数は、Mobile and Socialサーバーにアクセスするために必要なURL(プロトコル、ホスト名およびポート番号を含む)です。HTTPおよびHTTPSプロトコルのみがサポートされています。
appName
引数は、アプリケーションを識別する一意の識別子です。この文字列値はMobile and Socialサーバー管理コンソールのアプリケーション・プロファイルのセクションにあるアプリケーション名の値に一致している必要があります。詳細は、『Oracle Fusion Middleware Oracle Access Management管理者ガイド』のアプリケーション・プロファイルの編集または作成に関する項を参照してください。
domain
引数は、Mobile and Socialサーバーが存在する場所内のインターネット・ドメインの名前です。
delegate
引数は、self
に設定する必要があります。
次に、OMMobileSecurityService
setup
メソッドをコールします。
[mss setup];
設定メソッドにより、Mobile and Socialサーバーから構成済セキュリティ・ポリシーおよびアプリケーション・プロファイルを取得します。このメソッドは、Mobile and Socialサーバー上で認証、認可およびユーザー・プロファイル・サービスに接続するために必要なサービス・エンドポイント(URL)のリストも取得します。
設定コールは、非同期コールで、iOSクライアントSDKは指定されたデリゲート用の次のメソッドをコールします。
didReceiveApplicationProfile: (NSDictionary *)applicationProfile error: (NSError *)error
このメソッドは、クライアント登録を処理するOMRegistrationService
オブジェクトを返します。
注意: [ 詳細は、次の場所にある『iOS Developer Library Threading Programming Guide』を参照してください。 |
手順2: 認証プロセスの実行
OracleMobileSecurityService
オブジェクトは現在のセッションに関する詳細のすべてを維持します。サービスに接続するために必要なアプリケーション・プロファイルおよびURLを受け取ったら、認証プロセスを開始します。次のメソッドをコールします。
NSError *error = nil; //startAuthenticationProcess API triggers the authentication process. error = [self.mss startAuthenticationProcess:nil presenterViewController:loginController]; if (error) { UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Authentication process failed" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; [alertView release]; return; }
最後の行で認証プロセスが開始され、iOSクライアントSDKがMobile and Socialサーバーと連携して認証プロセスを実行します。ユーザーがすでに認証されていて、認証トークンがまだ有効な場合、Mobile and Socialサーバーはキャッシュされたトークンを単に返すのみです。それ以外の場合、サーバーはユーザーにログイン資格証明を提供するように要求します。Mobile and Socialサーバーがナレッジベース認証を使用するように構成されている場合、iOSクライアントSDKはその詳細を自動的に処理します。
次に、iOSクライアントSDKはデリゲートのdidFinishAuthentication: error:
メソッドをコールします。このメソッドは、トークンの詳細を持つOMAuthenticationContext
を返します。
OMMobileSecurityService
オブジェクトの[mobileSecurityService authenticationContext]
メソッドを使用して、いつでもOMAuthenticatonContext
を取得します。OMAuthenticationContext
の詳細は、APIドキュメントを参照してください。
- (void)didFinishAuthentication:(OMAuthenticationContext *)context error:(NSError *)error { if (context == nil || error != nil) { NSString *msg = [[NSString alloc] initWithFormat:@"%@-%d: %@", [error domain], [error code], [error localizedDescription]]; UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Err" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; [msg release]; [alertView release]; return; } // If successful, proceed with your remaining actions. // This example gets the authenticated user's attributes // and presents it using User Profile Viewer. OMUserRoleProfileService* ups = [mss userRoleProfileService]; OMUserManager *um = [ups getuserManager]; OMUser *user = [um searchUser:context.userName attributes:nil shouldPreFetch:NO error:&error]; self.user = user; [detailPaneController showProfileButton];
この時点で、アプリケーションはMobile and Socialサーバーから取得されたトークンを使用して、追加のWebサービス・コールを行うことができます。
注意: iOSクライアントSDKは大量のメモリーを消費しません。SDKは登録ハンドル、認証ハンドル、アプリケーション・プロファイルおよびセキュリティ・プロファイルを格納します。iOSがメモリー量が少ないことを警告する通知を送信すると、SDKはそのキャッシュを永続化し、そのメモリーを解放します。必要に応じて、SDKは適宜ファイルまたは |
この項では、HTTP Basic認証を実装するためのサンプル・コードを提供します。この認証モデルはMobile and Socialサーバーを必要としません。
HTTP Basic認証スキームは次の機能をサポートしています。
オンラインおよびオフライン認証
オフライン認証および取得の資格証明ストレージ
アイドル・タイムアウトおよびセッション・タイムアウト
オンライン認証が実施されるまでに許容されるオフライン認証の失敗の最大回数
認証(OAM_ID
およびObSSSOCookie
など)の後のHTTPCookie
の取得
ログアウトによるIDM Mobile iOSクライアントSDKのクッキーおよびキャッシュされた情報の消去
次に、HTTP Basic認証のサンプル・コードを示します。
OMMobileSecurityConfiguration *conf = [[OMMobileSecurityConfiguration alloc] initWithApplicationID:@"TestApp" maxFailureAttempts:3 authenticationScheme:OM_HTTP_BASIC_AUTH_SCHEME]; /* Initialize OMMobileSecurityService by passing in ADFMobileSecurityConfiguration */ OMMobileSecurityService *service = [[OMMobileSecurityService alloc]initWithAppProfileConfiguration:conf delegate:self]; /* Create an authentication request object that will hold all the inputs for one particular session*/ OMAuthenticationRequest *request = [[[OMAuthenticationRequest alloc]init]]; [request setLogoutURL:@"http://hostName.example.com:14100/oam/server/logout"]; [request setSessionExpiryInSecs:30]; [request setIdleTimeInSecs:12]; [request setIsOnlineMode:true]; NSMutableArray *array = [[[NSMutableArray alloc]init]; [array addObject:@"OAM_ID"]; [request setRequiredTokens:array]; [request setAuthenticationURL:@"http://hostName.example.com:7777/index.html"]; [request setAuthenticationScheme:OM_HTTP_BASIC_AUTH_SCHEME]; NSError *error = nil; UINavigationController *viewController = [service getAuthenticationViewController:request error:nil]; if (viewController != nil) [self presentModalViewController:viewController animated:true]; else if (error != nil) { UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Could not authenticate" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; [alertView release]; }
認証プロセスが完了すると、コードは、デリゲートのdidFinishAuthentication: error:
メソッドをコールします。
この項のコード・サンプルを使用する前に、このSDKに固有ではない情報について、「ユーザー・プロファイル・サービスを使用したアプリケーションの構築」を参照してください。
この項のコード・サンプルは、次の3つのカテゴリに分類されます。
ユーザーの詳細を検索および取得するには、OMMobileSecurityService
オブジェクトからOMUserManager
のハンドルを取得します。OMMobileSecurityService
オブジェクトの詳細は、「iOSクライアントSDKを使用した認証サービスの起動」を参照してください。
OMUserManager
では、ユーザーの詳細を検索および取得するための同期および非同期APIを提供します。
すべての非同期操作はOMAsyncOpHandle
オブジェクトを返します。このオブジェクトを使用して、完了前に操作を取り消すことができます。完了後に操作を取り消しても、操作は取り消されません。
- (NSArray *)searchUsersWithFilter: (NSDictionary *)filter isSimpleSearch: (BOOL)simpleSearch attributesToBeFetched: (NSArray *)attributesToFetch pageSize: (NSInteger)pageSize pagePosition: (NSInteger)pagePosition error: (NSError **)error;
- (OMAsyncOpHandle *)searchUsersAsynchronouslyWithFilter:(NSDictionary *)filter isSimpleSearch:(BOOL)simpleSearch attributesToBeFetched:(NSArray *)attributesToFetch pageSize:(NSInteger)pageSize pagePosition:(NSInteger)pagePosition; - (OMUser *)searchUser: (NSString *)user attributes: (NSArray *)attributes shouldPreFetch: (BOOL)preFetch error: (NSError **)error;
- (OMAsyncOpHandle *)searchUserAsynchronously: (NSString *)user attributes: (NSArray *)attributes shouldPreFetch: (BOOL)preFetch error: (NSError **)error; - (OMAsyncOpHandle *)searchAsynchronouslyUser: (NSString*)user attributes: (NSArray *)attributes shouldPreFetch: (BOOL)preFetch;
- (NSError *)deleteUser: (NSString *)userName;
- (OMAsyncOpHandle *)deleteAsynchronouslyUser:(NSString*)userName;
- (NSError *)createUserWithAttributes: (NSDictionary *)attributes;
- (OMAsyncOpHandle *)createUserAsynchronouslyWithAttributes:(NSDictionary *)attributes;
- (OMAsyncOpHandle *)modifyAsynchronouslyUser: (NSString*)user attributes: (NSDictionary *)attributes;
グループの詳細を検索および取得するには、OMMobileSecurityService
オブジェクトからOMRoleManager
のハンドルを取得します。OMMobileSecurityService
オブジェクトの詳細は、「iOSクライアントSDKを使用した認証サービスの起動」を参照してください。
OMRoleManager
では、グループの検索、メンバーのグループへの追加およびグループからのメンバーの削除を行うための同期および非同期APIを提供します。
すべての非同期操作はOMAsyncOpHandle
オブジェクトを返します。このオブジェクトを使用して、完了前にいつでも操作を取り消すことができます。完了後に操作を取り消しても、操作は取り消されません。
- (OMRole *)getRoleByName: (NSString *)roleName error: (NSError **)error;
- (OMAsyncOpHandle *)getAsynchronouslyRoleByName: (NSString *)roleName;
- (NSError *)deleteRoleByName: (NSString *)roleName;
- (OMAsyncOpHandle *)deleteAsynchronouslyRoleByName:(NSString*)name;
- (OMUser *)getUserInfo: (NSString *)userName fromRole: (NSString *)roleName error: (NSError **)error;
- (OMAsyncOpHandle *)getAsynchronouslyUserInfo:(NSString *)user fromRole:(NSString *)roleName;
- (NSError *)deleteMember: (NSString *)memberName fromRole: (NSString *)roleName;
- (OMAsyncOpHandle *)deleteAsynchronouslyMember:(NSString *)memberName fromRole:(NSString*)roleName; - (OMAsyncOpHandle *)createAsynchronouslyRoleWithAttributes:(NSArray*)attributes withValues:(NSArray*)values;
- (OMAsyncOpHandle *)modifyAsynchronouslyRole:(NSString*)role attributes:(NSArray*)attributes values:(NSArray*)values;
- (OMAsyncOpHandle *)addUserAsynchronouslyToRole:(NSString *)roleName withAttributes:(NSArray*)attributes withValues:(NSArray*)values;
次のAPIを使用して、マネージャやその部下に関する情報をリクエストします。
ユーザーのマネージャの取得
次のAPIはOMUser
で使用可能です。
- (OMUser *)getManager: (NSError **)error; - (OMAsyncOpHandle *)getManagerAsynchronously;
指定されたユーザーの部下の取得
次のAPIはOMUser
で使用可能です。
- (NSArray *)getReporteesWithAttributes: (NSArray *)attributes returningError: (NSError **)error; - (OMAsyncOpHandle *)getReporteesAsynchronouslyWithAttributes:(NSArray *)attributes;
資格証明ストア・サービスでは、iOS Keychain Servicesを使用して重要なデータを保存および取得するためのAPIを提供します。
OMMobileSecurityService
オブジェクトから開始して、OMCredentialStore
ハンドルを取得します。OMCredentialStore
を使用して、KeyChainItem
.から重要なデータへの書込みおよび重要なデータの取得を行います。
次のコード・スニペットは、OMCredentialStore
の使用方法を示しています。
ユーザー名およびパスワードの追加
この例では、KeyChainItem
で指定されたキーにユーザー名とパスワードを追加します。
- (void)addCredential:(NSString *)userName pwd:(NSString *)password url:(NSString *)key;
ユーザー名、パスワードおよびテナント名の追加
これは前のaddCredential
機能のバリエーションです。
- (void)addCredential:(NSString *)userName pwd:(NSString *)password tenantName:(NSString *)tenantName url:(NSString *)key;
資格証明の削除
この例では、KeyChainItemから資格証明を削除します。真の削除操作はないため、かわりに、ユーザー名およびパスワードがnullに設定されます。
- (void)deleteCredential:(NSString*)key;
ユーザー名およびパスワードの更新
この例では、ユーザー名とパスワードが指定されると、ユーザーおよびキーの値を更新します。真の更新操作はないため、updateCredential
はaddCredential
をコールします。
- (void)updateCredential:(NSString*)userName pwd:(NSString*)password url:(NSString*)key;
ユーザー名、パスワードおよびテナント名の更新
これは前のupdateCredential
機能のバリエーションです。
- (void)updateCredential:(NSString *)userName pwd:(NSString *)password tenantName:(NSString *)tenantName url:(NSString *)key;
ユーザー名およびパスワードの取得
この例では、指定のキーのユーザー名、パスワードおよびテナント名を取得します。
- (OMCredential *)getCredential:(NSString*)key;
KeyChainItemでのプロパティの格納
この例では、KeyChainItem
でプロパティを格納します。
- (void)storeProperty: (NSString *)property withKey: (NSString *)key;
KeyChainItemでの複数のプロパティの格納
これは前のstoreProperty
機能のバリエーションです。
- (void)storeProperty: (NSString *)property withKey: (NSString *)key withLabel: (NSString *)label withDescription: (NSString *)description;
この項では、iOSクライアントSDKを使用してモバイル・シングル・サインオン・エージェント・アプリケーションと連携する方法について説明します。Mobile and Socialでのモバイル・シングル・サインオンに関する概念情報は、『Oracle Fusion Middleware Oracle Access Management管理者ガイド』のモバイル・シングル・サインオン(SSO)機能の概要に関する項およびMobile and Socialの理解に関する項を参照してください。
Webアプリケーションは、モバイルSSOエージェントによって提供されるシングル・サインオン認証機能を使用することもできます。この機能にはAccess Managerが必要です。
Oracle Access Management管理コンソールにログオンして、「ポリシー構成」タブをクリックします。
「共有コンポーネント」で、「認証スキーム」をクリックし、「作成」ボタンをクリックします。
認証スキームの作成タブが開きます。
次のようにフォームに入力して、新しい認証スキームを作成します。
名前: MobileSSOScheme
認証レベル: 2
チャレンジ・メソッド: FORM
チャレンジ・リダイレクトURL: /oam/server/
認証モジュール: LDAP
チャレンジURL: /mobilesso?serviceDomain=
MobileServiceDomain
ここで、MobileServiceDomainは、シングル・サインオン用に構成されるドメインの名前です。
コンテキスト・タイプ: customWar
コンテキストの値: /oic_rest
Oracle Access Management管理コンソールで、次の手順を実行します。
アプリケーション・ドメインで新しい認証スキームを作成します。
認証スキーム: MobileSSOScheme
(MobileSSOSchemeは、手順1で作成されたスキームです。)
/mobileapp
などのHTTPリソースを作成し、作成された認証スキーム(MobileSSOScheme)を使用してそのリソースを保護します。これは、モバイルWebブラウザ(iOS用モバイル版Safari)からアクセスでき、Webgateによって保護されるURIです。
Mobile and Social SDKを使用して、Mobile and SocialサービスによりAccess Managerに対して認証できます。Access Managerに対して認証すると、SDKはトークンを取得し、それをクッキー・ストアで永続化して、Access Managerで保護されたアプリケーションが埋め込まれたWebブラウザを使用できるようにします。ただし、Access Managerで保護されているREST Webサービスは、Webブラウザを使用してアクセスできません。
Mobile and Social SDKでは、Access Managerによって保護されているREST WebサービスにアクセスするためにOMRESTRequest
クラスを提供しています。まず最初に、SDKを使用し、Mobile and SocialサービスによりOAMサーバーに対して認証します。
次に、OMMobileSecurityService
オブジェクトおよびデリゲート・オブジェクトを渡すことによって、OMRESTRequest
オブジェクトを初期化します。次のいずれかのメソッドを使用できます。
executeRESTRequest: convertDataToJSON: isJsonRepresentation returningResponse: error:
- または -
executeRESTRequestAsynchronously: convertDataToJSON:
前者は同期コールで、後者は非同期コールです。非同期コールは次のOMRESTRequestDelegate
メソッドにより結果を戻します。
didFinishExecutingRESTRequest: data: urlResponse: error: asyncHandle:
次の例は、OMRESTRequest
オブジェクトの非同期APIを示しています。
- (void)someMethod { OMMobileSecurityService *mss = ...; ... //Initialize OMRESTRequest object. In this example, instead of using //"initWithMobileSecurityService: delegate:" method, we use init method //and set the properties OMRESTRequest *restReq = [[OMRESTRequest alloc] init]; restReq.delegate = self; restReq.mobileService = mss; NSURL *url = [[NSURL alloc] initWithString:@"http://myresturl.example.com/resturl"]; NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithCapacity:1]; //It is important to set the User-Agent to the value configured in OAM 11g R2 //Webgate user defined parameters. [dictionary setObject:@"OAMMS-Agent" forKey:@"User-Agent"]; NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:url]; [urlRequest setAllHTTPHeaderFields:dictionary]; [url release]; [dictionary release]; [urlRequest setHTTPMethod:@"GET"]; OMAsyncOpHandle *opHandle = [restReq executeRESTRequestAsynchronously:urlRequest convertDataToJSON:FALSE]; [urlRequest release]; OMLog(@"%@", opHandle); } -(void) didFinishExecutingRESTRequest:(OMRESTRequest *)RESTRequest data:(id)data urlResponse:(NSURLResponse *)urlResponse error:(NSError *)error asyncHandle:(OMAsyncOpHandle *)handle { if (error) { //In case of error, show the error message UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"REST Request Error" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; [alertView release]; } else { //Show the result in the UIAlertView NSString *disp = nil; if ([data isKindOfClass:[NSDictionary class]]) { NSDictionary *dict = (NSDictionary *)data; disp = [[dict OMJSONRepresentation] retain]; } else { disp = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; } UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Received" message:disp delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [disp release]; [alertView show]; [alertView release]; } }
注意:
Access Management 11g R2 Webgateのユーザー定義パラメータには、
|
次の手順では、OMRESTRequest
APIの内部フローについて説明します。
1. OMRESTRequest
APIがモバイル・アプリケーションによって提供されるURLを呼び出します。
2. Oracle Access Management 11g R2 Webgateが次のような詳細で401エラーを返します。
HTTP/1.1 401 Authorization Required WWW-Authenticate: OAM-Auth realm="<WebGateName>:<AuthenticationLevel> <RelativeRESTURL>", request-ctx="<RequestContext>"
3. Mobile and Social SDKは、アプリケーションの有効期間中に取得したアクセス・トークンのキャッシュを保持します。このWebgateのアクセス・トークンがすでにキャッシュに存在する場合、SDKはアプリケーション・リクエストにアクセス・トークンを挿入します。
4. Webgate用アクセス・トークンがMobile and Social SDKキャッシュで使用できない場合、RESTリクエストをMobile and Socialサーバーに送信してWebgate用アクセス・トークンを取得します。
5. リクエストが有効な場合、Mobile and Socialはレスポンスでアクセス・トークンを返します。
6. Mobile and Social SDKは、Mobile and Socialサーバーによって返されるトークンを挿入します。
この項には、モバイル・シングル・サインオン・アプリケーションの作成を開始するための情報が含まれています。
モバイル・シングル・サインオン・エージェントとして機能するには、アプリケーションは他のアプリケーション(モバイルSSOクライアント)からの認証リクエストを処理するロジックを含んでいる必要があります。Mobile and Socialでは、必要なロジックを示すサンプルのSSOエージェント・アプリケーションを提供します。このロジックを任意のビジネス・アプリケーションに適用して、アプリケーションがモバイルSSOエージェントとして機能できるようにします。開始するには、OICSSOAPP.zip
を開きます。
iOSモバイルSSOアプリケーションのアプリケーション・デリゲートがopenURL
メソッドを実装して、他のアプリケーションからのSSOリクエストを処理する必要があることに注意してください。また、URLスキームはiOSアプリケーションとMobile and Socialサーバーで定義される必要があります。最後に、アプリケーション・プロファイルをMobile and Socialサーバー上のサービス・ドメインに追加する際、モバイル・シングル・サインオン(SSO)構成属性(シングル・サインオンへの参加およびエージェント優先度)を構成します。
注意: Mobile and Socialサーバー上でのiOS固有の設定の詳細は、『Oracle Fusion Middleware Oracle Access Management管理者ガイド』の次のトピックを参照してください。
|