asp.net-core-webapi - 如何在 AspNet.Security.OpenIdConnect.Server (ASOS) 中使用刷新令牌获取新的访问令牌
问题描述
我使用 React 作为客户端和 Web API 核心进行后端交互。对于身份验证,我们使用AspNet.Security.OpenIdConnect.Server (ASOS)基于令牌的身份验证。
我必须实现刷新令牌场景,在访问令牌到期时,我们使用刷新令牌(由 ASOS 返回)来获取新的访问令牌。
我知道通过在客户端调用方法来实现的一种方法是在 AXIOS 拦截器中,如下所示。
httpPromise.interceptors.response.use(undefined, err => {
const { config, response: { status } } = err;
const originalRequest = config;
if (status === 401) {
var refresh_Token = JSON.parse(window.localStorage.getItem('refreshToken'));
fetch(globalConstant.WEB_API_BASE_PATH + "authtoken,
{
method: "POST",
headers: new Headers({
'Content-Type': 'application/json',
})
},
data:{grant-type:"refresh_Token",refresh_token:"refresh Token ....."
)
....other logic to set new access token and make call again to existing
request.
}
})
我想在WEB API Core 端完成它,以便在中间件或身份验证管道中检测访问令牌过期并返回新的访问令牌。WEB API 代码一览如下。
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
.... some code
serives.AddAuthentication(o =>
{
o.DefaultAuthenticateScheme = OAuthValidationDefaults.AuthenticationScheme;
})
serives.AddOAuthValidation()
serives.AddOpenIdConnectServer(options =>
{
options.ProviderType = typeof(AuthorizationProvider);
options.Provider = new AuthorizationProvider(new SecurityService());
options.TokenEndpointPath = "/authtoken";
options.UserinfoEndpointPath = "/userInfo";
options.AllowInsecureHttp = true;
options.ApplicationCanDisplayErrors = true;
});
..some code
}
我关注的链接如何使用带有 OpenId Connect 的刷新令牌和https://github.com/mderriey/aspnet-core-token-renewal/blob/master/src/MvcClient/Startup 在 asp.net 核心中处理过期的访问令牌。 CS
解决方案
推荐阅读
- android - Android:将匿名帐户转换为 Google 或 Facebook 帐户
- typescript - 联合类型中的方法丢失了它的类型
- asp.net-core - 如何在 .net core API 中编写 Cypher 查询
- javascript - Nuxt:动态头部/元标题在 ssr 上未定义
- linux - 如何获取csv文件中归档数量的不同字数
- winforms - 处理/捕获按钮单击事件作为 WinForms 中的优先级
- memory - 超拉姆如何工作?
- netflix-zuul - mongoMappingContext 和 zuulRefreshRoutesListener 之间的 bean 循环
- java - 从刷新令牌获取访问令牌失败并出现 invalid_grant 错误,并且错误请求或令牌已过期或作为错误描述被撤销
- python-3.x - 使用 django-yearmonth-widget 设置年和月的默认值