Lap*_*mir 2 asp.net-core identityserver4
我有 :
假设用户已经获得带有 id_token 和访问令牌的 cookie。然后他从 mvc 应用程序调用一个操作:
var client = new HttpClient();
client.SetBearerToken(accessToken);
// call webapi from mvc
var content = await client.GetStringAsync("http://localhost:5001/api/resource-with-policy");
Run Code Online (Sandbox Code Playgroud)
在 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";
});```
Run Code Online (Sandbox Code Playgroud)
由 Security Token Service 在私钥中签名的 JWT 令牌。JWT 令牌是一种非加密的数字签名 JSON 有效负载,其中包含用于识别用户的不同属性(声明)。签名是 JWT 的最后一部分,需要用于验证有效负载。该签名是使用标头中描述的算法生成的(RS256
例如),以防止未经授权的访问。有关 JWT 令牌的更多详细信息,请参阅此文档。
为了验证签名,首先我们应该检索并缓存歌唱令牌(公钥):1)第一个调用是对发现端点的调用。它的 URL 形成为/.well-known/openid-configuration
.2) 然后您会在这里找到大量元数据,包括 jwks_uri
端点地址,该端点地址将发送 get 请求以获取密钥以验证令牌的签名。
令牌签名是根据 JSON Web Key 规范实现的。使用令牌标头(分别为kid
和x5t
参数)中的密钥 ID 和 X.509 证书指纹值,然后在获得的密钥集合中找到适当的公钥,以使用n(Modulus)
和验证签名e(Exponent)
。这是一个代码示例。
归档时间: |
|
查看次数: |
16242 次 |
最近记录: |