我想要一个(.NET Core)Web API网站。在请求进入我的站点之前,它必须通过辅助站点(“网关”)。网关将找出声明并使用自定义声明创建一个IClaimsPrinciple
。就我而言,网关可以通过魔术设置这些主张。我的api将信任他们100%。
然后,网关将向我的api发出自己的请求,以某种方式附加声明信息。当请求到达我的api网站时,声明已被设置 。
网关站点如何将声明“附加”到http请求?
一个类似的用例是,如果IIS设置为Windows auth。当我在(不受保护的)控制器方法中检查静态User
对象时,可以看到它是WindowsPrincipal
,它的声明类似于AD用户组。 (据我所知)我的代码对添加这些声明的请求没有任何作用;似乎IIS更改了将这些声明附加到我的网站之前的请求。
我要问的可能吗?如果是这样,您如何根据请求设置原则?还是我完全误解了如何设定原则?在Windows Auth示例中,.NET项目中是否设置了WindowsPrinciple?
答案 0 :(得分:0)
您可能想看一下JWT的安全性。它将允许您将声明捆绑在一个地方,并生成一个编码的字符串值,可以在服务之间传递并从中读取声明。它的安全性元素是内置的。这是它的工作方式示例:https://jasonwatmore.com/post/2018/08/14/aspnet-core-21-jwt-authentication-tutorial-with-example-api
答案 1 :(得分:0)
所以事实证明这实际上是不可能的。 Windows可以使用某种黑魔法通过IIS通过WindowsPrincipal,但是,您(或我)实际上无法通过ClaimsPrincipal。您必须使用JWT或其他方法构造。