【问题标题】:Oauth refresh tokenOauth 刷新令牌
【发布时间】:2020-05-05 19:45:08
【问题描述】:

抱歉新手问题。 如果我必须发送我的凭据,刷新令牌有什么意义?

或者换句话说,请求刷新令牌或只是一个新的访问令牌之间的实际区别是什么?

这是我的代码:

    TokenResponse tokenResponse = null;
var tokenRequest = new TokenRequest
    {
        GrantType = "customgrant",
        ClientId = "myUserName",
        ClientSecret = "secret",
        Address = disco.TokenEndpoint,
    };

tokenResponse = await client.RequestTokenAsync(tokenRequest);

var testClient = new HttpClient();

testClient.SetBearerToken(tokenResponse.AccessToken);

var apiRes = await testClient.GetAsync("http://localhost:11000/api/GetData/104246");
if (!apiRes.IsSuccessStatusCode)
{

    if (apiRes.StatusCode == System.Net.HttpStatusCode.Unauthorized)
    {

        RefreshTokenRequest refreshTokenRequest = new RefreshTokenRequest();
        refreshTokenRequest.RefreshToken = tokenResponse.RefreshToken;
        refreshTokenRequest.ClientId = "myUserName";
        refreshTokenRequest.ClientSecret = "secret";
        refreshTokenRequest.Address = disco.TokenEndpoint;
        tokenResponse = await testClient.RequestRefreshTokenAsync(refreshTokenRequest);
    }
}

【问题讨论】:

  • 你用的是什么流量?
  • 你在说什么证书?在正常设置中,客户端不知道用户的凭据,因此它必须使用刷新令牌,因为别无选择。

标签: oauth oauth-2.0 asp.net-identity identityserver4 openid-connect


【解决方案1】:

你的问题不清楚。 refresh token 用于获取新的有效access token,当您已经拥有有效的refresh token 时,您不需要用户凭据。

【讨论】:

  • 这不是真的。我正在使用 IdentityServer4 + .net 核心应用程序,当我使用 RefreshToken 参数调用 RequestRefreshTokenAsync 时,我得到“client_id is missing”
  • @OmriD 当然,我可能是错的。那么使用过 IdP 的文档对您来说是一个好的开始。
  • 我没有找到任何关于这个问题的明确文档。不要误会我的意思,我想得到你的帮助。
  • @OmriD 是的,这是真的。将您的代码添加到问题中,似乎您做错了什么。
猜你喜欢
  • 2017-11-20
  • 2016-03-31
  • 2012-12-21
  • 2015-06-27
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 2017-12-20
相关资源
最近更新 更多