Аутентификация гибридного приложения Blazor в веб-приложении BlazorC#

Место общения программистов C#
Ответить
Anonymous
 Аутентификация гибридного приложения Blazor в веб-приложении Blazor

Сообщение Anonymous »

Я хочу разработать гибридное приложение Blazor, которое будет работать на Android и Windows, а также веб-приложение Blazor, которое будет служить сервером для гибридного приложения. Я искал лучший способ авторизовать пользователя в гибридном приложении в веб-приложении, чтобы он мог обмениваться данными через SignalR.
Документация по гибридной аутентификации и авторизации Microsoft ASP.NET Core Blazor есть несколько примеров, содержащих этот комментарий

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

private Task LoginWithExternalProviderAsync()
{
/*
Provide OpenID/MSAL code to authenticate the user. See your identity
provider's documentation for details.

Return a new ClaimsPrincipal based on a new ClaimsIdentity.
*/
var authenticatedUser = new ClaimsPrincipal(new ClaimsIdentity());

return Task.FromResult(authenticatedUser);
}
Кажется, это не очень полезно? Но я довольно растерян. Большинство других вещей, которые я читал, относятся к сторонней авторизации, а не к авторизации на чем-то вроде веб-сервера Blazor, который только что настроен для индивидуальной учетной записи? Может ли кто-нибудь указать мне правильное направление?
Мне просто создать минимальный API на сервере, например:

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

app.MapGet("/GetClaimsPrincipal", async (string UserName, string Password) =>{
try
{
using IServiceScope scope = app.Services.CreateScope();
IServiceProvider services = scope.ServiceProvider;
UserManager userManager = services.GetRequiredService();
SignInManager signInManager = services.GetRequiredService();
IHostEnvironmentAuthenticationStateProvider HostAuthentication = services.GetRequiredService();
AuthenticationStateProvider AuthenticationStateProvider = services.GetRequiredService();
IdentityUser? user = await userManager.FindByNameAsync(UserName);

if (user is not null)
{
bool valid = await userManager.CheckPasswordAsync(user, Password);

if (valid)
{
ClaimsPrincipal? cp = await signInManager.CreateUserPrincipalAsync(user);
return Results.Ok(cp); // Probably needs to serialized.
}
else
{
return Results.NotFound(UserName);
}
}

return Results.NotFound(UserName);
}
catch (Exception ex)
{
return Results.Problem(ex.Message);
}});
Передать ClaimsPrincipal из веб-приложения? Или это совсем не в том направлении?

Подробнее здесь: https://stackoverflow.com/questions/791 ... or-web-app
Ответить

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

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

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

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

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