Использование 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...>
Другие вопросы по тегам