0

我使用 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 获得一个干净的 LoginResult 和 RefreshTokenHandler(以及令牌、时间戳、用户/声明)来创建一个 HttpClient。

我怎样才能做到这一点?有没有办法不分叉 IdentityModel.OidcClient。

4

0 回答 0