iOS用Liferay画面でのOAuth 2の使用
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
OAuth 2 を使用して、次の OAuth 2付与タイプログインスクリーンレット を使用して認証できます
-
認証コード(ネイティブアプリの場合はPKCE): ユーザーを資格情報を入力するモバイルブラウザーのページにリダイレクトします。 ログイン後、ブラウザはユーザーをモバイルアプリにリダイレクトします。ユーザーの資格情報はアクセスされないため、アプリを介して侵害されることはありません。取り消し可能なトークンを使用します。 これは、ユーザーがアプリに資格情報を入力したくない場合にも役立ちます。たとえば、ユーザーはサードパーティのTwitterアプリにTwitterの資格情報を直接入力したくない場合があり、代わりにTwitterの公式サイトを介して認証することを好みます。 認証のためにリダイレクトするサイトにはOAuth 2が実装されている必要があることに注意してください。
-
リソース所有者パスワード: ユーザーは、アプリに直接資格情報を入力して認証します。
-
クライアント資格情報: ユーザーの操作を必要とせずに認証します。 これは、アプリが特定のユーザーのリソースではなく、独自のリソースにアクセスする必要がある場合に役立ちます。
このチュートリアルでは、これらの付与タイプをログインスクリーンレットで使用する方法を示します。 開始する前に、ポータルでOAuth 2.0アプリケーションを登録する手順について、 Liferay DXPのOAuth 2.0ドキュメント を参照してください。
認証コード(PKCE)
ログインスクリーンレットで認証コード付与タイプを使用するには、次の手順に従います。
-
ユーザーが認証された後にモバイルブラウザーがリダイレクトするURLを構成します。 これを行うには、 Mobile SDKの認証コードの手順の最初の2つの手順に従います。 このURLは、ポータルとiOSアプリの両方で構成する必要があることに注意してください。
-
ログインスクリーンレットの
loginMode
属性をoauth2Redirect
ます。 これを行うには2つの方法があります。- コードでは、Login Screenletインスタンスの `authType` または `loginMode` プロパティとして: loginScreenlet.authType = .oauth2Redirect // or loginScreenlet.loginMode = "oauth2redirect" `loginMode`に設定する場合、 `oauth2redirect` は文字列でなければならないことに注意してください。
- Interface Builderで、 ログインモード 属性の値として。 これは、他のスクリーンレット属性を設定するのと同じ方法で行います(ストーリーボードで選択されたスクリーンレットで、属性インスペクターを使用して)。 必ずピリオドなしで
oauth2redirect
を入力してください。
- Interface Builderで、 ログインモード 属性の値として。 これは、他のスクリーンレット属性を設定するのと同じ方法で行います(ストーリーボードで選択されたスクリーンレットで、属性インスペクターを使用して)。 必ずピリオドなしで
-
ログインスクリーンレットの
oauth2clientId
属性を、使用するポータルのOAuth 2アプリケーションのIDに設定します。 この値を見つけるには、ポータルのOAuth 2管理ポートレットでそのアプリケーションに移動します。 -
ログインスクリーンレットの
oauth2redirectUrl
属性を手順1で構成したURLに設定します。 -
AppDelegate
のapplication(_:open:options :)
メソッドで、URLを使用してSessionContext
メソッドoauth2ResumeAuthorization
を呼び出します。 これは、リダイレクトが実行されたときにLiferay Screensに通知します。application(_:open:options :)
メソッドの詳細については、カスタムURLの使用に関する Appleのドキュメントのセクション Incoming URLsの処理 を参照してください:
func application(_ app:UIApplication、open url:URL、 options:[UIApplicationOpenURLOptionsKey:Any] = [:])-> Bool { return SessionContext.oauth2ResumeAuthorization(url:url) }
SessionContext.oauth2Cancel()
呼び出すことにより、いつでも承認をキャンセルできることに注意してください。
リソース所有者のパスワード
ログインスクリーンレットでリソース所有者パスワード付与タイプを使用するには、次の手順に従います。
-
ログインスクリーンレットの
loginMode
属性をoauth2UsernameAndPassword
ます。 これを行うには2つの方法があります。- コードでは、Login Screenletインスタンスの `authType` または `loginMode` プロパティとして: loginScreenlet.authType = .oauth2UsernameAndPassword // or loginScreenlet.loginMode = "oauth2UsernameAndPassword" `loginMode`設定する場合、 `oauth2UsernameAndPassword` は文字列でなければならないことに注意してください。
- Interface Builderで、 ログインモード 属性の値として。 これは、他のスクリーンレット属性を設定するのと同じ方法で行います(ストーリーボードで選択されたスクリーンレットで、属性インスペクターを使用して)。 必ずピリオドなしで
oauth2UsernameAndPassword
を入力してください。
- Interface Builderで、 ログインモード 属性の値として。 これは、他のスクリーンレット属性を設定するのと同じ方法で行います(ストーリーボードで選択されたスクリーンレットで、属性インスペクターを使用して)。 必ずピリオドなしで
-
ログインスクリーンレットの
oauth2clientId
属性を、使用するOAuth 2アプリケーションのIDに設定します。 この値を見つけるには、OAuth 2管理ポートレットでそのアプリケーションに移動します。 -
ログインスクリーンレットの
oauth2clientSecret
属性を同じOAuth 2アプリケーションのクライアントシークレットに設定します。
クライアント資格情報
OAuth 2クライアント資格情報付与タイプは、ユーザーの操作を必要とせずに認証します。 これは、アプリが特定のユーザーのリソースではなく、独自のリソースにアクセスする必要がある場合に役立ちます。
Screensアプリでクライアント資格情報付与タイプを使用するには、次の手順に従います。
-
クライアント資格情報付与タイプを使用するには、 iOS Mobile SDKの指示 従ってください。
-
セッションオブジェクトの
認証
プロパティには、有効な認証オブジェクトが含まれています。LROAuth2Authentication
キャストしてから、SessionContext
メソッドloginWithOAuth2
のauthentication
引数に渡します。let auth = session.authentication as! LROAuth2Authentication SessionContext.loginWithOAuth2(authentication: auth, userAttributes: [:])
これにより、Screens SessionContext
オブジェクトが初期化され、iOSアプリで使用するScreenletが認証されます。