微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 IdentityModel.OidcClient 通过 refresh_token 获取 LoginResult?

如何解决如何使用 IdentityModel.OidcClient 通过 refresh_token 获取 LoginResult?

我使用 IdentityModel.Oidcclient 来获取 access_token。在浏览器中登录后,我调用 Oidcclient.ProcessResponseAsync() 以使用 RefreshTokenHandler(以及令牌、时间戳、用户/声明)获取 LoginResult。现在我使用 RefreshTokenHandler 创建一个 HttpClient 来调用我的 WebApis。

var state = await oidcclient.PrepareLoginAsync();
Openbrowser(state.StartUrl);
// ...
var loginResult = await client.ProcessResponseAsync($"?code={context.Request.QueryString.Get("code")}&state={state.State}",state);

var httpClient = new HttpClient(loginResult.RefreshTokenHandler);
// await httpClient.GetAsync(...);

每次 access_token 过期时,WebApis 都会返回 HTTP 状态 401(未授权)。 RefreshTokenHandler 使用 refresh_token 创建新的 access_token 并重复请求。到目前为止一切正常。

现在我保留 refresh_token,重新启动我的应用程序,并希望使用 refresh_token 通过 RefreshTokenHandler(和令牌、时间戳、用户/声明)获得干净的 LoginResult 以创建一个 HttpClient。

我该怎么做?有没有办法不分叉 IdentityModel.Oidcclient.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。