2016-10-12 5 views
0

ADAL을 사용하여 iOS에서 다중 리소스 지원을 활성화하는 방법 많은 사이트에서 검색했지만 새로 고침 토큰 및 액세스 토큰을 사용하여 여러 리소스가있는 흐름을 이해하기 어렵습니다. 누구든지이 흐름을 간략하게 설명 할 수 있습니까? 나는 모두 액세스 토큰을 얻고있다 및 token.How I 새로 고침 : 클라이언트 ID : redirectUri을 라이브러리에 따르면다중 리소스를 사용할 때 ADAL 라이브러리를 사용하는 방법

, ADTokenCacheStoreItem 내가 acquireTokenWithResource를 호출 할 때마다 accessToken이 경우, 항목을 저장하는 멀티 자원 재생 token.But 전무 할 것이다 것 내게 다중 소스 요청임을 라이브러리에 알릴 수 있습니다. 내가해야 할 일이 있습니까?

/*! 받은 액세스 토큰입니다. 항목에 다중 리소스 새로 고침 토큰이 저장되는 경우에는 nil이어야합니다. / @property NSString accessToken;

또한 각 엔드 포인트가 있거나없는 각 API를 호출하기 전에 acquireTokenWithResource : clientId : redirectUri를 호출해야합니까? 아니면 각 리소스에 대한 액세스 토큰과 만료 날짜를 캐시/저장하는 것은 제 책임입니까? 다중 리소스의 경우 자동 로그인을 어떻게 처리 할 수 ​​있습니까?

+1

나는 귀하의 우려를 잘 듣지 않습니다. "resource1"에 대한 승인 요청을 발행하고 다중 리소스 새로 고침 토큰을받은 것으로 가정하면 "resource2"에 대한 승인 요청을 발행하면 사용자에게 인증하라는 메시지가 표시되지 않고 액세스 토큰을 받게됩니다 (새로 고침 토큰이 원래 요청과 현재 요청 사이에 만료되었습니다). 귀하의 요구 사항 인 경우 프롬프트보다는 오히려 실패를 보장하기 위해'acquireTokenWithResource : clientId : redirectUri : promptBehavior : userId : extraQueryParameters : completionBlock :'을 사용할 수 있습니다. – Paulw11

+0

나는 각각 10 개의 API 호출 (각 호출은 액세스 토큰이 필요합니다) , 그리고 나머지 2 resource2 가지고,이 경우에는 acquireTokenWithResource 호출해야합니까 : clientId : redirectUri : method 10 times? 또는 resourceID와 액세스 토큰의 캐시 매핑을 유지해야하며 각 특정 리소스에 대한 accessToken 만료 사례 만 처리하면됩니까? – Shyam

+0

리소스에 액세스하려고 시도하기 전에'acquireTokenWithResource : clientId : redirector :'를 호출합니다. 캐시에 유효한 토큰이 있으면 해당 토큰이 리턴됩니다. 존재하지 않으면 라이브러리는 새로 고침 토큰을 사용하여 액세스 토큰을 얻으려고 시도합니다. 새로 고침 토큰이 만료 된 경우 사용자에게 다시 인증하라는 메시지가 표시됩니다. – Paulw11

답변

1

ADAL을 사용하면 응용 프로그램에 액세스 할 때마다 acquireToken* 양식을 호출해야 API 호출이 가능할 것으로 추정됩니다. ADAL은 토큰 캐싱, 새로 고침 등을 처리해야합니다. 수동으로 새로 고침 토큰을 사용해서는 안됩니다.

Azure AD의 새로 고침 토큰은 본질적으로 "다중 리소스"입니다. 즉, 리소스 1에 대한 액세스 토큰을 요청하고 해당 액세스 토큰 + 새로 고침 토큰 쌍을받은 다음 새로 고침 토큰을 사용하여 리소스 2에 대한 액세스 토큰을 얻을 수 있습니다. 이렇게하면 다른 리소스에 대한 토큰을 "자동으로"얻을 수 있습니다. 즉, 사용자는 한 번만 로그인해야합니다.

+0

답변 해 주셔서 감사합니다. 마지막으로 한 가지 의심 .. 새로 고침 토큰이 만료 된 경우 어떻게됩니까? 내가 새로 고침 토큰의 유효 기간은 14 일입니다. 사용자가 다시 로그인하라는 메시지를 표시하지 않고 만료되면 자동으로 알릴 수있는 방법이 있습니까? – Shyam

+1

AAD의 새로 고침 토큰에 고정 된 수명이 없습니다. 당신이 할 수있는 유일한 일은 그것들을 사용하려고 시도하는 것이며, 요청이 실패 할 경우 사용자에게 다시 로그인하라고 요청하십시오. 캐시 된 새로 고침 토큰을 각 토큰 요청에서 AAD로부터받은 새로 고침 토큰으로 항상 바꾸어야합니다. ADAL을 사용하는 경우이 모든 사항이 귀하를 대신하여 처리됩니다. – dstrockis