在开发过程中伪造身份验证



在我目前的 asp.net MVC核心应用程序中,我们使用OpenId Connect向我们公司的身份提供商进行身份验证。 但是,在本地开发期间,我们无法联系到提供商。 此外,我们还希望轻松更改声明值以进行开发和单元测试。

我尝试将IHttpContextAccessor的服务绑定交换为DevelopmentHttpContextAccessor,该访问器用所需的声明填充HttpContext的标识。 这是一种迂回的方式,它也没有工作,因为我在我的服务中检查索赔时,索赔会被清空。

在开发和单元测试期间处理此问题的标准方法是什么?我错过了什么?

答案不是伪造 IHttpContextAccessor,而是为标识属性设置自定义 ClaimPrincipal。 在Startup.Configure中,您可以添加中间件步骤:

app.Use((httpContext, nextMiddleware) => {
var claims = new[] {
// Your claims here
};
var claimsIdentity = new ClaimsIdentity(claims);
var user = new ClaimsPrincipal(claimsIdentity);
httpContext.User = user;
return nextMiddleware();
});

相关内容

  • 没有找到相关文章

最新更新