asp.net - 使用 JWT 进行模拟

标签 asp.net oauth-2.0 jwt

我正在尝试基于此实现JWT授权article 。 我还需要让特定用户(管理员)模拟其他用户(客户端)。

我在这里看到两种可能性:

  • 使用管理 token 发出管理请求,并将模拟的 client_id 添加到每个请求中;
  • 为管理员请求一个新 token ,该 token 将在其有效负载中包含客户端的用户名和角色,因此它基本上会成为客户端 token ,但它还有两个额外的字段:“impersonated=true”和“impersonator_admin_id” =x”。

我更喜欢第二个,因为将 .net 内置授权属性与客户端角色一起使用会更容易。 但我不确定这是否会带来安全漏洞,或者是否可以使用 .Net 的 OAuthAuthorizationServer 来实际实现。

最佳答案

从您的链接中,首先确定管理员是否冒充用户或代表用户行事。请注意代表!=冒充

  • 当 A 保持自己的身份并获得 B 的所有权利时,A 代表 B 行事

  • A 冒充 B,但实际上 A 就是 B

JWT RFC没有为此目的定义任何具体的权利要求。在此draft作者建议添加代表 claim obo

{"obo": {
    "prn":"mailto:joe@example.com",
    "ctx":["urn:adatum.com:calendar"]
}}
  • prn 标识 JWT 持有者所代表的委托(delegate)人。

  • ctx 建立允许持有者代表主体行事的权限上下文。该主张应强制限制行使委托(delegate)权利的背景

请注意,obo 声明不包含在 IANA's JSON Web Token Claims 中。 ,因此应将它们视为推荐。 OpenID 中有类似的声明 azp 但不清楚如何应用它

  • azp:授权方 - 向其颁发 ID token 的一方

回答你的问题,在第一种情况下,我认为你正在谈论代表行为,因此请包括 client_id 和安全上下文。第二种情况是冒充。

关于asp.net - 使用 JWT 进行模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41747705/

相关文章:

asp.net - IIS 错误 403.14 - 禁止访问

authentication - 如何在没有微软身份的情况下进行 jwt 身份验证 blazor 服务器?

node.js - 如何在 cookie 中存储 jwt 并在重定向页面时将其传递给身份验证函数?

java - Facebook OAuth 异常 : redirect_uri missing

java - 请求的资源地址在自定义登录页面上可见

amazon-web-services - 在预先身份验证的用户的情况下,如何使用Amazon Cognito获取刷新 token

asp.net - 如何将值从 Web 表单传递到另一个 Web 表单?

asp.net - JavaScript : Why if(false)?

c# - 如何将下拉列表中的选定数据发送到mysql中的相应表?

java - 使用 Google 和 Facebook 等身份提供商在 Keycloak 上进行 Android 身份验证