Asp.net 使用JWT模拟
我正试图基于此实现JWT授权。 我还需要让特定用户(管理员)模拟其他用户(客户端) 我在这里看到两种可能性:Asp.net 使用JWT模拟,asp.net,oauth-2.0,jwt,Asp.net,Oauth 2.0,Jwt,我正试图基于此实现JWT授权。 我还需要让特定用户(管理员)模拟其他用户(客户端) 我在这里看到两种可能性: 使用管理令牌发出管理请求,并将模拟客户端id添加到每个请求中 为管理员请求一个新的令牌,该令牌将在其有效负载中包含客户端的用户名和角色,因此它基本上将成为客户端令牌,但它还将有两个额外字段:“impersonated=true”和“impersonator\u admin\u id=x” 我更喜欢第二个,因为在客户端角色中使用.net内置授权属性更容易。 但我不确定这是否会打开安全漏
- 使用管理令牌发出管理请求,并将模拟客户端id添加到每个请求中李>
- 为管理员请求一个新的令牌,该令牌将在其有效负载中包含客户端的用户名和角色,因此它基本上将成为客户端令牌,但它还将有两个额外字段:“impersonated=true”和“impersonator\u admin\u id=x”
但我不确定这是否会打开安全漏洞,或者它是否可以使用.Net的OAuthAuthorizationServer实际实现。模拟总是会带来严重的安全隐患,因为它允许“成为其他人” 因此,您需要确保通过引入强化审核日志记录等方式尽可能使此状态可见。此外(为了区分真实登录和模拟登录),您希望能够在JWT访问令牌中传输有关此特殊状态的信息,例如,向模拟用户的配置文件添加其他模拟和模拟属性(如第二点中所述) 最后,您可能会有一个常规的API端点,除了这样的请求
POST https://YOUR_DOMAIN/users/{user_id}/impersonate
Content-Type: 'application/json'
Authorization: 'Bearer {ACCESS_TOKEN}'
{
impersonator_id: "IMPERSONATOR_ID"
}
。。。这将分发特定的模拟令牌,允许“通过用户的眼睛”使用服务。首先,从您的链接中确定管理员是在模拟用户还是代表用户。请注意,代表!=模仿
- 当A维护自己的身份并从B获得所有权利时,A代表B行事
- 当出于所有目的A是B时,A模拟B
{"obo": {
"prn":"mailto:joe@example.com",
"ctx":["urn:adatum.com:calendar"]
}}
标识联合工作组持有人代表的委托人prn
建立允许持证人代表委托人行事的权限上下文。这一要求应是强制性的,以限制行使委托权利的环境ctx
海外建筑运营管理局
的索赔不包括在合同中,因此应将其作为建议。OpenID中也有类似的声明azp
,但不清楚如何应用它
:授权方-向其颁发ID令牌的一方azp