Настройка интеграционных тестов для внешних поставщиков идентификации ASP.NET. Challenge () возвращает 401C#

Место общения программистов C#
Ответить
Anonymous
 Настройка интеграционных тестов для внешних поставщиков идентификации ASP.NET. Challenge () возвращает 401

Сообщение Anonymous »

Моя цель - настроить интеграционные тесты для внешних поставщиков входа в систему в моем приложении. Я хочу макетного поставщика внешнего входа и моделировать его поведение. Так, например, в своем тесте я хочу позвонить/API/auth/external-login Endpoint, сделайте успех поставщика поддельного входа в систему и проверить, сделал ли обратный вызов моего приложения все, что он должен был сделать.
В программе.

Код: Выделить всё

builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = FakeAuthHandler.SchemeName;
options.DefaultChallengeScheme = FakeAuthHandler.SchemeName;
}).AddScheme(
FakeAuthHandler.SchemeName,
displayName: FakeAuthHandler.SchemeName,
configureOptions: _ => { }
);
< /code>
fakeauthhandler выглядит так: < /p>
public class FakeAuthHandler : AuthenticationHandler
{
public const string SchemeName = "TestProvider";

public FakeAuthHandler(IOptionsMonitor options,
ILoggerFactory logger, UrlEncoder encoder)
: base(options, logger, encoder) { }

protected override Task HandleAuthenticateAsync()
{
var claims = new[]
{
new Claim(ClaimTypes.NameIdentifier, "TestExternalUser"),
new Claim(ClaimTypes.Name, "Test User"),
new Claim(ClaimTypes.Email, "testuser@example.com"),
new Claim("urn:google:profile", "https://profiles.google.com/testuser"),
};
var identity = new ClaimsIdentity(claims, SchemeName);
var principal = new ClaimsPrincipal(identity);
var ticket = new AuthenticationTicket(principal, SchemeName);

return Task.FromResult(AuthenticateResult.Success(ticket));
}
}
< /code>
конечная точка выглядит так: < /p>
[HttpGet("/api/auth/external-login")]
[AllowAnonymous]
public async Task ExternalLogin(string provider, string returnUrl = null)
{
var redirectUrl = _linkGenerator.GetPathByAction(
action: nameof(AuthController.ExternalLoginCallback),
controller: "Auth",
values: new { returnUrl = request.ReturnUrl }
);

var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);

return Challenge(properties, provider);
}
Я вижу в отладчике, что fakeauthhandler вызывается и возвращает успех.
Проблема в том, что/API/Auth/versemplo-login возвращает 401 и не перенаправляет путь к обращению. Я даже не уверен, как проверить, где проблема. Я что -то пропустил?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -challenge
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»