oauth使测试变得不可能

时间:2019-04-28 01:07:44

标签: c# asp.net-core oauth-2.0 identityserver4 xunit

我们刚刚获得了与IdentityServer4和angular-auth-oidc-client一起使用的代码流。

我们对其中一种API进行了以下设置。

var guestPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .RequireClaim("scope", "gwcResourceApi")
    .Build();

services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
    .AddIdentityServerAuthentication(options =>
    {
        options.Authority = "https://our.live.server.com";
        options.ApiName = "ouResourceApi";
        options.RequireHttpsMetadata = false;
        options.ApiSecret = "ourresourceapi";
    });

services.AddAuthorization(options =>
{
    options.AddPolicy("admin", policy => { policy.RequireClaim("role", "Administrator"); });
});

services.AddMvc(options => { options.Filters.Add(new AuthorizeFilter(guestPolicy)); })
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

然后在我们的控制器上

[Authorize("admin")]
public class EazeeTrakFilesController : ControllerBase

然后我们得到用户这样的声明。

public async Task<IEnumerable<FileDTO>> GetFile(bool open)
{
    var userId = User.Claims.First(x => x.Type == "sub").Value;

我们无法使用xuint测试进行测试。在我们的CustomWebApplicationFactory(在Microsoft教程中创建,用于测试.Net Core MVC控制器)中,我们添加了

services.AddAuthorization(options => { options.AddPolicy("Admin", authBuilder => { authBuilder.RequireRole("Administrators"); }); });

这使我们对非防护控制器的测试正常工作。以为我会补充一点,以便您对我们的xunit设置有所了解。

使用[Authorize("admin")]测试受保护的控制器时,我们会收到错误No authenticationScheme was specified, and there was no DefaultChallengeScheme found.

在我看来,我们如何获得可以测试的伪造身份。我们不仅需要装扮成管理员的东西。另外,我们如何获得假冒索赔用户?

0 个答案:

没有答案