Когда я вхожу в систему с помощью Microsoft OAuth в моем приложении Blazor, AuthenticateResult.Succeeded истинно, даже если я не указываю URI перенаправления. Это не соответствует требованиям Google , если я не добавлю свой URI в клиент OAuth.
Imo, он не должен работать без этого URI перенаправления, согласно спецификации OAuth2.0. c:
Сервер авторизации ДОЛЖЕН требовать publi c клиентов и ДОЛЖЕН требовать, чтобы конфиденциальные клиенты регистрировали свои URI перенаправления.
Я использую Microsoft.AspNetCore.Authentication.MicrosoftAccount 3.0.3 с. NET Core 3.0
public class ExternalLoginModel : PageModel
{
public IActionResult OnGetAsync(string externalAuthType, string returnUrl)
{
var authenticationProperties = new AuthenticationProperties
{
RedirectUri = Url.Page("./externallogin",
pageHandler: "Callback",
values: new { returnUrl }),
};
return new ChallengeResult(externalAuthType, authenticationProperties);
}
public async Task<IActionResult> OnGetCallbackAsync(
string returnUrl = null, string remoteError = null)
{
var authenticateResult = await HttpContext.AuthenticateAsync("External");
if (!authenticateResult.Succeeded) // Should be false for Microsoft sign in
return BadRequest();
...
return LocalRedirect(returnUrl);
}
}
Со следующим добавлением в мой автозагрузку:
services.AddAuthentication(o =>
{
o.DefaultSignInScheme = "External";
}).AddCookie("External");
services.AddAuthentication().AddGoogle(google =>
{
google.ClientId = Configuration["Authentication:Google:ClientId"];
google.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
});
services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
});
Настройки аутентификации моего приложения выглядят следующим образом (на самом деле я использую localhost: 12345 в настройках, но это не то, на чем работает мое приложение ..):
По иронии судьбы последнее предложение может объяснить это, но я даже не знаю, какой поток использует библиотека MicrosoftAccount , и я получаю только generi c документация при поиске в Google.