Blazor WebAssembly SPAテクニカルデモアプリのデモを書いていますが、認証に問題があります。 Identity Serverを使用して認証を行いますが、それをサポートするライブラリが見つかりません。私が見つけたすべてのチュートリアルは、Blazor Serverを使用するか、ASP.net Coreをホストするように追加するようにガイドされましたが、私のデモアプリでは実際には意味がありません。
誰かが手伝ってくれるならうれしいです。
ありがとうございました
既存のOAuth IDプロバイダーを使用して既存のBlazor WASMアプリにOIDCを追加するには、読み取りプロバイダー 認証ライブラリでASP.NET Core Blazor WebAssemblyスタンドアロンアプリを保護 。
新しい Microsoft.AspNetCore.Components.WebAssembly.Authentication 自動サイレント更新をサポートします。
ハードコードされた値の代わりに構成ファイルを使用したい場合は、このようにアプリをセットアップできます
完全な機能サンプルについては theidserver.herokuapp.com/ にアクセスしてください。
アプリを3.2.0プレビュー2にアップグレードします
読み取り 既存のプロジェクト段落をアップグレード
パッケージ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 は、IdentityServerでBlazor Wasmを使用する方法を提供します
読んだ
現在、使用できるblazor OIDC libがいくつかありますが、認定されていないすべての機能を実装したものはありません。
興味があれば、トークンのサイレント更新をサポートするために 自分自身 と書きますが、まだ完了しておらず、この問題に悩まされています: [wasm] WasmHttpMessageHandler、メッセージごとのフェッチオプションを提供する 。
この問題はこの まだマージされていないPR で修正されています。したがって、自分のWasmHttpMessageHandler
を待つか実装する必要があります。
2番目のアプローチは、 JS interop を使用して oidc.js をラップすることです。