返回

在HttpClient中使用JwtSecurityToken

发布时间:2022-04-07 04:40:15 317
# flask

我正在尝试使用JWT令牌查询带有HttpClient.我已经尝试了一段时间,尝试了很多不同的方法,比如Base64编码并将JWT令牌raw放入授权头中,但端点会将403 Forbidden加上;“身份验证失败”;每一次。JWT的验证工作正常,并且是通过Microsoft.IdentityModel.Tokens:

public JwtSecurityToken ValidateCurrentToken(string token)
{
    var jwksJson = GetKeyInfo();
    var tokenHandler = new JwtSecurityTokenHandler();
    var keyset = JsonWebKeySet.Create(eveJwksJson);
    
    var tokenParameters = new TokenValidationParameters();
    tokenParameters.ValidateIssuerSigningKey = true;
    tokenParameters.ValidateIssuer = true;
    tokenParameters.ValidateAudience = false;
    tokenParameters.ValidateLifetime = true;
    tokenParameters.ValidateActor = false;
    tokenParameters.ValidIssuers = new List{ "host1", "host2" };
    tokenParameters.IssuerSigningKey = keyset.Keys.First();

    SecurityToken validatedToken;
    try
    {
        tokenHandler.ValidateToken(token, tokenParameters, out validatedToken);
    }
    catch(Exception e)
    {
        throw new AuthenticationException("Token is not valid: " + e.Message);
    }

    var securityToken = (JwtSecurityToken) validatedToken;
}

但我不知道该在本节的授权标题中添加什么:

public async Task GetResponse(HttpClient httpClient, Uri uri, JwtSecurityToken token)
{
    HttpRequestMessage httpRequestMessage = new HttpRequestMessage()
    httpRequestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", );
    httpRequestMessage.Method = HttpMethod.Get;
    httpRequestMessage.RequestUri = uri
    return await httpClient.SendAsync(httpRequestMessage);
}

有人建议我试试看urlBase64编码JSON来自令牌的数据,但没有结果。所有这些文档都与服务有关,我似乎可以找到任何适用于我的问题的文档。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(2)
按点赞数排序
用户头像