Identity Server 4:自定义 OIDC 登录回调以将令牌存储在商店中
Identity Server 4 : Custom OIDC login callback to store tokens in a store
我目前正在构建一个需要身份验证和检索 acces_token 以访问 API 的 Blazor 应用程序。我还使用 refresh_token 来避免用户在浏览时重新登录。
我目前的管理方式是在依赖注入系统中注册一个自定义 httpClient
,检索 HttpContext
以检查 access_token,如果不好,手动调用 idsrv4 来检索新的访问和刷新令牌
主要问题是这样做,我无法写入 httpContext
新值(响应已经开始)所以我必须每次都这样做,失去令牌生命周期的优势。
我的目标是将所有用户信息和令牌信息存储在自定义存储中。为此,我必须处理检索令牌时的点,但我找不到适合作为回调的上帝位置?
AddOpenIdConnect
选项中的Events
属性我已经试过了,但似乎没有一个能满足我的需要?
登录后我可以将自定义回调逻辑放在哪里?
如果您想在客户端应用程序获取访问令牌后获取并存储访问令牌,您可以使用OnTokenResponseReceived
事件:
options.Events = new OpenIdConnectEvents
{
OnTokenResponseReceived = ctx =>
{
var accessToken = ctx.TokenEndpointResponse.AccessToken;
var idToken = ctx.TokenEndpointResponse.IdToken;
return Task.CompletedTask;
},
};
我目前正在构建一个需要身份验证和检索 acces_token 以访问 API 的 Blazor 应用程序。我还使用 refresh_token 来避免用户在浏览时重新登录。
我目前的管理方式是在依赖注入系统中注册一个自定义 httpClient
,检索 HttpContext
以检查 access_token,如果不好,手动调用 idsrv4 来检索新的访问和刷新令牌
主要问题是这样做,我无法写入 httpContext
新值(响应已经开始)所以我必须每次都这样做,失去令牌生命周期的优势。
我的目标是将所有用户信息和令牌信息存储在自定义存储中。为此,我必须处理检索令牌时的点,但我找不到适合作为回调的上帝位置?
AddOpenIdConnect
选项中的Events
属性我已经试过了,但似乎没有一个能满足我的需要?
登录后我可以将自定义回调逻辑放在哪里?
如果您想在客户端应用程序获取访问令牌后获取并存储访问令牌,您可以使用OnTokenResponseReceived
事件:
options.Events = new OpenIdConnectEvents
{
OnTokenResponseReceived = ctx =>
{
var accessToken = ctx.TokenEndpointResponse.AccessToken;
var idToken = ctx.TokenEndpointResponse.IdToken;
return Task.CompletedTask;
},
};