gpt4 book ai didi

asp.net-core - 网络调用/.well-known/openid-configuration/and/.well-known/openid-configuration/jwks

转载 作者:行者123 更新时间:2023-12-02 00:10:42 26 4
gpt4 key购买 nike

我有:

  • 身份服务器 4,
  • 具有 OpenId Connect 和混合流的 Mvc 应用
  • WebApi 应用

假设用户已经获得带有 id_token 和访问 token 的 cookie。然后他从 mvc 应用调用一个 Action :

 var client = new HttpClient();
client.SetBearerToken(accessToken);
// call webapi from mvc
var content = await client.GetStringAsync("http://localhost:5001/api/resource-with-policy");

在 fiddler 中我看到两个调用:

  • GET/.well-known/openid-configuration/

  • GET/.well-known/openid-configuration/jwks

正如我假设 WebApi 在操作中看到 [Authorize] 属性并进行这些调用一样。这些电话的目的是什么?

WebApi 是这样配置的:

              .AddJwtBearer("Bearer", options =>
{options.Authority = "<is4-url>";
options.RequireHttpsMetadata = false;
options.Audience = "Api1";
});```

最佳答案

由 Security Token Service 在私钥中签名的 JWT token 。 JWT token 是一种未加密的数字签名 JSON 负载,其中包含用于识别用户的不同属性(声明)。签名是JWT的最后一部分,需要用来验证payload。此签名是使用 header 中描述的算法生成的(例如RS256)以防止未经授权的访问。请参阅this document有关 JWT token 的更多详细信息。

要验证签名,首先我们应该检索并缓存唱歌 token (公钥):1)第一次调用是发现端点。它的 URL 格式为 /.well-known/openid-configuration .2) 然后你会在这里找到很多元数据,包括 jwks_uri 端点地址,它将发送 get 请求到获取 key 以验证 token 的签名。

token 签名是根据 JSON Web Key 规范实现的。使用 token header 中的 key ID 和 X.509 证书指纹值(分别为 kidx5t 参数),然后在获得的 key 集合中找到合适的公钥以进行验证带有 n(Modulus)e(Exponent) 的签名。 Here是一个代码示例。

关于asp.net-core - 网络调用/.well-known/openid-configuration/and/.well-known/openid-configuration/jwks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59245281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com