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