首先,在Blazor WASM项目中安装Microsoft.AspNetCore.Components.WebAssembly.Authentication包。
然后,在程序启动时配置Auth0授权选项:
var auth0ProviderOptions = new Auth0ProviderOptions
{
Domain = "yourdomain.auth0.com",
ClientId = "yourClientId",
RedirectUri = $"{navigation.BaseUri}authentication/login-callback"
};
在此代码中,您需要相应地替换“yourdomain.auth0.com”和“yourClientId”。
在Blazor WASM项目中的Program.cs文件中,找到Main方法并添加以下行:
builder.Services.AddOidcAuthentication(options =>
{
options.ProviderOptions = auth0ProviderOptions;
options.UserOptions.RoleClaim = "https://schemas.quickstarts.com/roles";
options.UserOptions.NameClaim = "https://schemas.quickstarts.com/name";
options.ProviderOptions.DefaultScopes.Add("openid");
options.ProviderOptions.DefaultScopes.Add("profile");
options.ProviderOptions.DefaultScopes.Add("email");
}).AddAccountClaimsPrincipalFactory>();
在此代码中,我们传递了之前配置的AuthProviderOptions对象,并设置了RoleClaim和NameClaim选项。
最后,为了在每次页面刷新时禁用对身份提供者的令牌验证,需要在Index.html的head标记中添加以下行:
注意这会禁用浏览器缓存,因此每次页面刷新时都需要重新登录。如果您不希望执行此操作,请查看 Blazor-WASM-OpenIdConnect-AutoRefreshTokens的解决方案。