是否可以使用自定义登录组件/页面配置Blazor WebAssembly oidc



我有一个配置了oidc身份验证的blazor-wasm应用程序,它运行正常。该网站有2个域,

运行identity Server 4的
  1. identity.example.com
  2. example.com为blazor wasm网站提供服务器

当我添加时,一切都正常

@attribute [Authorize]

用户(如果未通过身份验证(重定向到剃须刀组件https://identity.example.com/Account/Login?ReturnUrl...我想知道是否有一种方法可以在mysite.com域上实现自定义登录页面/组件,比如mysite.com/login,这样用户就会被重定向到该页面,该表单就会提交到身份域AccountController,并且仍然让框架处理jwt令牌。。。?

我还有其他几个原因,首先,我希望网站上的一切都支持身份验证。现在,我已经在每个页面上添加了@attribute[Authorize],但这仍然会导致网站加载,只有在用户可以看到网站后,他们才会重定向到identity.example.com上的登录页面。这看起来有点奇怪,接下来identity.exexample.com上的"登录"页面看起来与我想尝试使;主题化";的登录页面看起来像网站的其他部分

我目前已经配置了类似于这个的Oidc

nuget package Microsoft.AspNetCore.Components.WebAssembly.Authentication

在appsetting.json 中

{
"oidc": {
"Authority": "https://identity.example.com/",
"ClientId": "abcd",
"DefaultScopes": [
"openid",
"profile",
"email"
],
"PostLogoutRedirectUri": "https://example.com",
"ResponseType": "code"
}
} 

然后在我的程序.cs中我有

builder.Services.AddOidcAuthentication(options => {
builder.Configuration.Bind("oidc", options.ProviderOptions);                  
});

并且在我的wwwroot/index.html 中

<script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>

出于安全考虑,这不是一个好主意
但是,如果您在表单数据和请求标头中提供了良好的防伪令牌,则可以在需要的位置实现登录页面。这意味着您需要来自IS4服务器的登录页面。分析页面以查找包含反XSRF伪造令牌的隐藏表单字段。将cookie和标头发送回IS4服务器
祝你好运。

如果您管理IS4服务器,则更容易自定义IS4的登录页面。

相关内容

最新更新