2016-10-12 11 views
0

多くのサイトでADALSearchedを使用してiOSでマルチリソースサポートを有効にする方法はありますが、リフレッシュトークンとアクセストークンを使用して、誰もこの流れを簡単に説明できますか?複数のリソースを持つ場合のADALライブラリの使用方法

ライブラリーによると、ADTokenCacheStoreItemはaccessTokenがなくてもアイテムがマルチリソースのリフレッシュトークンを格納する場合にはntです。ただし、acquireTokenWithResourceを呼び出すときはいつでも:clientId:redirectUri:アクセストークンとリフレッシュトークンの両方を取得しています。ライブラリがマルチソースリクエストであることを伝えることができます。必要な設定はありますか?

/*!受信したアクセストークン。アイテムがマルチリソースリフレッシュトークンを格納する場合は、nilでなければなりません。 / @property NSString accessToken;

また、異なるエンドポイントの有無にかかわらず、各APIを呼び出す前に、必ずacquireTokenWithResource:clientId:redirectUriを呼び出す必要がありますか。リソースごとにアクセストークンと有効期限をキャッシュ/保存するのは自分の責任ですか? また、私はマルチリソースの場合にサイレントログインを処理できますか?

+1

私はあなたの懸念にかなり従っていません。 「resource1」の認可リクエストを発行し、複数リソースのリフレッシュトークンを受信したとすると、「resource2」の認可リクエストを発行すると、ユーザーに認証を求めるメッセージが表示されずにアクセストークンが受信されます(リフレッシュトークンは元の要求と現在の間に期限切れになっています)。 – Paulw11

+0

私は10のAPI呼び出し(各呼び出しにはアクセストークンが必要です)、8つはresource1を持っていると考えます。 、残りの2つはresource2を持っています。この場合、acquireTokenWithResource:clientId:redirectUri:メソッドを10回呼び出す必要がありますか?あるいは、リソースIDとアクセストークンのキャッシュマッピングを維持する必要があり、特定のリソースごとにaccessTokenの有効期限を処理するだけで済みます。 – Shyam

+0

リソースへのアクセスを試みる前に 'acquireTokenWithResource:clientId:redirector:'を呼び出します。キャッシュに有効なトークンがある場合、そのトークンが返されます。存在しない場合、ライブラリはリフレッシュトークンを使用してアクセストークンを取得しようとします。リフレッシュトークンが期限切れになった場合、ユーザーは再認証を求めるメッセージが表示されます。 – Paulw11

答えて

1

ADALを使用する場合は、アプリケーションでアクセストークンが必要になるたびに、acquireToken*のフォームを呼び出すだけで、API呼び出しを行うことができます。 ADALはあなたのためにトークンキャッシング、リフレッシュなどを担当します。手動でリフレッシュトークンを使用する必要はありません。

Azure ADのリフレッシュトークンは、本質的に「マルチリソース」です。つまり、リソース1へのアクセストークンを要求し、そのアクセストークン+リフレッシュトークンペアを受信して​​、リフレッシュトークンを使用してリソース2へのアクセストークンを取得できます。これにより、異なるリソースのトークンを "サイレント"つまり、ユーザーは一度だけサインインする必要があります。

+0

あなたのお返事ありがとうございます。最後の1つの疑問..リフレッシュトークンが期限切れになった場合はどうすればよいですか?リフレッシュトークンの妥当性は14日になることを覚えています。ユーザーに再度ログインするように促さずに、期限切れになったらそれを静かに得る方法はありますか? – Shyam

+1

AADからのリフレッシュトークンの寿命が固定されていません。あなたが行うことができるのは、それらを使用することだけです。要求が失敗した場合は、再度ログインするようにユーザーに依頼してください。キャッシュされたリフレッシュトークンは、各トークンリクエストでAADから受け取った新しいリフレッシュトークンで置き換える必要があります。 ADALを使用している場合は、これがすべてあなたのために行われます。 – dstrockis

関連する問題