Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Azure AD should support logging into the callback url in Blazor

$
0
0
@page "/authentication/{action}"@using Microsoft.AspNetCore.Components.WebAssembly.Authentication@using Microsoft.Extensions.Logging@attribute [AllowAnonymous]@layout EmptyLayout@inject AuthenticationStateProvider _authenticationStateProvider@inject ILogger<Authentication> Logger<RemoteAuthenticatorView Action="@Action" OnLogInSucceeded="OnLogInSucceeded" OnLogOutSucceeded="OnLogOutSucceeded"><LoggingIn><SplashScreen Text="Logging In..."></SplashScreen></LoggingIn><CompletingLoggingIn><SplashScreen Text="Completing Login"></SplashScreen></CompletingLoggingIn></RemoteAuthenticatorView>@code {    [Parameter]    public string Action { get; set; }    private async Task OnLogInSucceeded(RemoteAuthenticationState remoteAuthenticationState)    {        Logger.LogInformation("{Component}: OnLoginSucceeded start", nameof(Authentication));        var authenticationState = await _authenticationStateProvider.GetAuthenticationStateAsync();        Logger.LogInformation("{Component}: authenticationState retrieved", nameof(Authentication));        if (authenticationState.User.Identity is not null && authenticationState.User.Identity.IsAuthenticated)        {            Logger.LogInformation("{Component}: user identity is not null and user is authenticated", nameof(Authentication));            if (authenticationState.User.Claims.All(c => c.Type != "role"))            {                Logger.LogInformation("{Component}: user claims does not have any role types setting return url of remoteAuthenticationState to unauthorized", nameof(Authentication));                remoteAuthenticationState.ReturnUrl = "/unauthorized";            }        }        Logger.LogInformation("{Component}: OnLoginSucceeded end", nameof(Authentication));    }    private void OnLogOutSucceeded(RemoteAuthenticationState remoteAuthenticationState)    {        Logger.LogInformation("{Component}: OnLogoutSucceeded start", nameof(Authentication));        remoteAuthenticationState.ReturnUrl = "/authentication/login";        Logger.LogInformation("{Component}: set remoteAuthenticationState Return Url to /authentication/login", nameof(Authentication));        Logger.LogInformation("{Component}: OnLogoutSucceeded end", nameof(Authentication));    }}

This is my blazer code, client bookmarked the URL as

http://localhost:5300/authentication/login-callback#code=0.AVoAZNoWcXd0WUyrFv2LtmlwSUir_qkyXOROvH9M36rkDGrXALs.AgABBAIAAAApTwJmzXqdR4BN2miheQMYAgDs_wUA9P-

How can my application still support it, as of now it is staying in loading with spinner.

I have tried with

<RemoteAuthenticatorView Action="@Action" OnLogInSucceeded="OnLogInSucceeded" OnLogOutSucceeded="OnLogOutSucceeded"><LoggingIn><SplashScreen Text="Logging In..."></SplashScreen></LoggingIn><CompletingLoggingIn><SplashScreen Text="Completing Login"></SplashScreen></CompletingLoggingIn></RemoteAuthenticatorView>@code {    [Parameter]    public string Action { get; set; }    protected override async Task OnParametersSetAsync()    {        if (Action == "login-callback")        {            await Task.Delay(2000);            await CompleteLogin();        }    }    private async Task CompleteLogin()    {        var authenticationState = await _authenticationStateProvider.GetAuthenticationStateAsync();        if (authenticationState.User.Identity is not null && authenticationState.User.Identity.IsAuthenticated)        {            if (authenticationState.User.Claims.All(c => c.Type != "role"))            {                Navigation.NavigateTo("/unauthorized");            }            else            {                Navigation.NavigateTo("/");            }        }        else        {            Navigation.NavigateToLogin("/authentication/login");        }    }}

I would like to is there any better way to achieve it or is it the right path.


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>