Использование ADFS OAuth Refresh Token
У меня ADFS3 OAuth2 настроен на возврат обновлений токенов:
PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -IssueOAuthRefreshTokensTo AllDevices
PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -TokenLifetime 10
PS> Set-AdfsProperties -SSOLifetime 480
Здесь токен доступа длится 10 минут, а токен обновления - 480 минут.
Затем я генерирую токен доступа, получая:
https://myadfsdomain/adfs/oauth/authorize
?response_type=code
&client_id=MYCLIENTID
&redirect_uri=https://myserver/callback
&resource=MYRelyingPartyId
и размещение responseCode
Например:
$http({method: "post",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
url: "https://myadfsdomain/adfs/oauth2/token",
data: "client_id=MYCLIENTID&code=" + responseCode + "&redirect_uri=https://myserver/callback&grant_type=authorization_code" })
Ответ имеет токен доступа, тип, время истечения и токен обновления:
{"access_token":"blah...",
"token_type":"bearer",
"expires_in":600,
"refresh_token":"blahblah..."}
Отлично. Токен доступа теперь действителен в течение всего времени, в течение которого он был настроен (10 минут здесь)
Вопросы по истечении этого времени, как мы используем refresh_token
получить еще один токен доступа? IE:
- Какой URL?
- Мы размещаем?
- Какие имена параметров мы используем, чтобы разместить
refresh_token
?
1 ответ
Тип предоставления обновленного токена также выполняется для конечной точки токена, которую вы использовали для обмена кодом авторизации. Вы должны использовать POST в соответствии с RFC: https://tools.ietf.org/html/rfc6749 и предоставить хотя бы параметры grant_type
а также refresh_token
, Пример, основанный на одном из RFC:
POST /adfs/oauth2/token HTTP/1.1
Host: myadfsdomain
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=<blahblah...>