首页 文章

使用ADFS OAuth刷新令牌

提问于
浏览
1

我将ADFS3 OAuth2配置为返回Refresh Tokens:

PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -IssueOAuthRefreshTokensTo AllDevices
PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -TokenLifetime 10
PS> Set-AdfsProperties -SSOLifetime 480

Access Token持续10分钟,Refresh Token持续480分钟 .

然后我通过GETing生成一个访问令牌:

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 回答

  • 5

    刷新令牌授权类型也针对您用于交换授权代码的令牌 endpoints 执行 . 您应该根据RFC使用POST:https://tools.ietf.org/html/rfc6749#section-6并至少提供参数 grant_typerefresh_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...>
    

相关问题