gpt4 book ai didi

authorization - 将 access_token 存储在用户声明中以获得授权是否安全?

转载 作者:行者123 更新时间:2023-12-03 19:28:17 29 4
gpt4 key购买 nike

所以,我在设置 IdentityServer4 时遇到了承载身份验证的问题。基本上,我无法调用我的 API 资源并收到 401 错误。当我使用 access_token 添加授权 header 时。我能够从我的网络请求中获取数据。

using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new
AuthenticationHeaderValue("Bearer", authToken);
var content = await
client.GetStringAsync("http://localhost:5000/localapi");
}

我获得 auth_token 的方法是将用户声明存储在由身份服务器客户端设置证明的 SecurityTokenValidated 回调中。
Notifications = new OpenIdConnectAuthenticationNotifications
{
SecurityTokenValidated = notification =>
{
var identity = notification.AuthenticationTicket.Identity;
identity.AddClaim(claim: new Claim(type: "auth_token", value:
notification.ProtocolMessage.AccessToken));
return Task.CompletedTask;
}
}

虽然这解决了我的授权问题,但我想通过将我的 auth_token 存储在身份声明中来确保我没有打开攻击向量。谁能告诉我这是否存在安全问题。

我担心的原因是我能够使用 Postman 创建一个简单的请求并手动将相同的 Bearer 授权 token 粘贴到请求中然后发送它。响应给了我“安全”的 api 数据。这对我说,如果有人拿到 auth_token,他们就可以访问 API(或者 Postman 绕过某些东西?)。

最佳答案

使用 OWIN 时,允许在声明中存储访问 token 。它类似于 .NET Core 推荐的将它们存储在 AuthenticationProperties 中的方法。使用 RemoteAuthenticationOptions SaveTokens .这两种方法都会导致 token 包含在客户端的 session cookie 中。

作为旁注,您可以考虑利用 IdentityServer4 ReferenceTokens如果还没有减少 cookie 的大小。

关于authorization - 将 access_token 存储在用户声明中以获得授权是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510961/

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