UWP上的IdentityModel刷新令牌实现

问题描述

我正在尝试使用实现IdentityServer4的ASP.NET Core Web API对我的UWP应用进行身份验证。 (geant_type是密码) 因此,在应用程序上,我添加了nuget IdentityModel 4.3.1 ,并编写了以下代码获取令牌和刷新令牌。请注意,我在这里使用 System.Net.Http.HttpClient

var policy = new discoveryPolicy();
        policy.ValidateIssuerName = false;
        
        var client = new HttpClient();
        
        discoveryDocumentResponse disco = await client.GetdiscoveryDocumentAsync(new discoveryDocumentRequest
        {
            Address = "https://maduranga-aTrad.boardpac.local:8443/Auth.API",ClientSecret = "LTY0OTU1NzY3OTM0OTQ1NjE3NA",Policy = policy
        });
        
        TokenResponse token = await client.RequestPasswordTokenAsync(new PasswordTokenRequest()
        {
            UserName = "User786",Password = "Password@123",ClientId = "boardpac.main.uwp",GrantType = "password",Scope = "openid email offline_access main auth",Address = disco.TokenEndpoint,AuthorizationHeaderStyle = BasicAuthenticationHeaderStyle.Rfc6749
        });

        TokenResponse refresh = await client.RequestRefreshTokenAsync(new RefreshTokenRequest()
        {
            Address = disco.TokenEndpoint,RefreshToken = token.RefreshToken,AuthorizationHeaderStyle = BasicAuthenticationHeaderStyle.Rfc6749,});

我的问题是

  1. 何时发送刷新令牌请求?我是否必须手动处理令牌到期? (我需要等到HttpClient返回HTTP错误401,然后启动令牌请求。但是所有后续请求会发生什么情况?我必须将所有请求排队,然后重试,等等。)看来很多工作。

  2. 我看到了一个示例,其中将 RefreshTokenHandler 设置为HttpClient(System.Net.Http.HttpClient),它说刷新部分是自动处理的。我使用Windows.Web.Http HttpClient,但不能使用RefreshTokenHandler。如何使用Windows.Web.Http HttpClient自动处理刷新令牌?

谢谢您的考虑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)