我有一个ASP.net核心WEB API,我已经使用本地用户帐户(使用WASM blazor模板创建它)保护了它的安全。我可以使用WASM客户端成功进行身份验证并调用webapi。
我有一个单独的服务器端Blazor应用程序,尝试调用此WebAPI,该WebAPI再次使用本地用户帐户和相同的身份数据库进行了保护。
在wasm(webapi)应用中,我按如下方式配置安全性:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("https://localhost:44339");
});
});
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUser, ApplicationDbContext>();
services.AddAuthentication()
.AddIdentityServerJwt();
services.AddControllersWithViews();
services.AddRazorPages();
在服务器端应用程序中,我按如下方式配置安全性:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(options => { options.SignIn.RequireConfirmedAccount = true; })
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddScoped<AuthenticationStateProvider,
RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
services.AddHttpClient();
然后在服务器端应用程序中,我尝试在_Host.cshtml文件中获取令牌,以便可以将其添加到客户端标头中,但它们始终返回为空。
AccessToken = await HttpContext.GetTokenAsync("access_token"),
RefreshToken = await HttpContext.GetTokenAsync("refresh_token")
在安全性方面,我是一位新手,非常感谢,我可能完全错了。任何人都可以给我一个指示,指出我是在做错事,还是需要做其他事情来获取这些令牌?
非常感谢 戈登