J'écris une démo d'application de démonstration technique Blazor WebAssembly SPA, mais j'ai des problèmes d'authentification. Je vais utiliser Identity Server pour faire l'autorisation, mais je ne trouve aucune bibliothèque pour le prendre en charge. Tous les didacticiels que j'ai trouvés m'ont guidé pour utiliser Blazor Server ou ajouter un hébergeur ASP.net Core, mais cela n'a pas vraiment de sens pour mon application de démonstration.
Je suis heureux si quelqu'un peut aider.
Je vous remercie
Pour ajouter OIDC à une application Blazor WASM existante à l'aide d'un fournisseur d'identité OAuth) existant lisez Sécurisez une application autonome ASP.NET Core Blazor WebAssembly avec la bibliothèque d'authentification .
Le nouveau Microsoft.AspNetCore.Components.WebAssembly.Authentication prend en charge le renouvellement automatique silencieux.
Si vous préférez utiliser un fichier de configuration au lieu de valeurs codées en dur, vous pouvez configurer l'application comme ceci
Visitez theidserver.herokuapp.com/ pour un échantillon fonctionnel complet.
Mettez à niveau votre application vers 3.2.0 Preview 2
Lire Mettre à jour un paragraphe de projet existant
Ajouter le package Microsoft.AspNetCore.Components.WebAssembly.Authentication
dotnet add package Microsoft.AspNetCore.Components.WebAssembly.Authentication::3.2.0-preview2.20160.5
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<app>Loading...</app>
...
<script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>
<script src="_framework/blazor.webassembly.js"></script>
</body>
</html>
{
"authority": "https://myidp.com", // Uri to your IDP server
"client_id": "myclientid", // Your client id
"redirect_uri": "https://localhost:44333/authentication/login-callback", // Uri to the application login callback
"post_logout_redirect_uri": "https://localhost:44333/authentication/logout-callback", // Uri to the application logout callback
"response_type": "code", // OAuth flow response type. For `authorization_code` flow the response type is 'code'. For `implicit` flow, the response type is 'id_token token'
"scope": "BlazorIdentityServer.ServerAPI openid profile" // list of scope your application wants
}
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
namespace BlazorIdentityServer.Client
{
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddBaseAddressHttpClient();
builder.Services.AddApiAuthorization(options => options.ProviderOptions.ConfigurationEndpoint = "oidc.json");
await builder.Build().RunAsync();
}
}
}
.2.0-preview2 fournit un moyen d'utiliser Blazor Wasm avec IdentityServer
Lis
Pour le moment, vous pouvez utiliser des bibliothèques OIDC blazor, mais aucune n'est certifiée et implémente toutes les fonctionnalités.
Si vous êtes curieux, j'écris le mien pour prendre en charge le renouvellement silencieux du jeton mais ce n'est pas encore terminé et je suis coincé par ce problème: [wasm] WasmHttpMessageHandler, Fournit des options de récupération par message .
Le problème est résolu dans ce PR pas encore fusionné . Il faut donc attendre ou implémenter mon propre WasmHttpMessageHandler
.
Une deuxième approche consiste à envelopper oidc.js en utilisant JS interop