Asp.net core 网络组装';s IAAuthenticationTokenProvider在请求令牌时崩溃
我正在尝试使用谷歌的OIDC对我的WASM Blazor应用程序中的用户进行身份验证。 我已通过本文检索到令牌: 我正在尝试检索AccessToken,以便在构建HubConnection实例时,使用注入的Asp.net core 网络组装';s IAAuthenticationTokenProvider在请求令牌时崩溃,asp.net-core,blazor-webassembly,Asp.net Core,Blazor Webassembly,我正在尝试使用谷歌的OIDC对我的WASM Blazor应用程序中的用户进行身份验证。 我已通过本文检索到令牌: 我正在尝试检索AccessToken,以便在构建HubConnection实例时,使用注入的IAccessTokenProvider实例将其传递给信号器集线器: 公共RemoteCombatListener(iTokeCache令牌缓存) { _连接=新的HubConnectionBuilder() .WithUrl(“https://localhost:44364/combat“,
IAccessTokenProvider
实例将其传递给信号器集线器:
公共RemoteCombatListener(iTokeCache令牌缓存)
{
_连接=新的HubConnectionBuilder()
.WithUrl(“https://localhost:44364/combat“,选项=>{
opts.AccessTokenProvider=tokenCache.GetToken;
})
.Build();
}
以下是my TokenCache的实现:
公共类令牌缓存:ITokenCache
{
专用只读IAccessTokenProvider\u tokenProvider;
专用只读导航管理器_navManager;
公共字符串CachedToken{get;private set;}
公共令牌缓存(IAccessTokenProvider令牌提供程序,NavigationManager navManager)
{
_令牌提供者=令牌提供者;
_navManager=navManager;
}
公共异步任务GetToken()
{
if(string.IsNullOrEmpty(CachedToken))
{
var requestedToken=await_tokenProvider.RequestAccessToken();
if(requestedToken.TryGetToken(out var accessToken))
{
CachedToken=accessToken.Value;
}
其他的
{
抛出新的AccessTokenNotAvailableException(_navManager,requestedToken,Enumerable.Empty());
}
}
返回CachedToken;
}
}
我现在面临的问题是,在调用\u tokenProvider.RequestAccessToken()
方法时,我遇到以下异常:
An exception occurred executing JS interop: The JSON value could not be converted to System.DateTimeOffset. Path: $.token.expires | LineNumber: 0 | BytePositionInLine: 80.. See InnerException for more details.
我无法找出我的设置有什么问题,因为调试随机停止,我唯一的选择是Console.Log调试。结果是,Oidc的默认配置没有请求访问令牌,只有id令牌。必须添加以下内容:
builder.Services.AddOidcAuthentication(选项=>{
//其余的配置。。。
options.ProviderOptions.ResponseType=“id\u令牌”;
});