我在Visual Studio 2019(预览版5(中设置了一个新的Blazor.NET项目,并添加了Azure AD B2C(AADB2C(,并将其部署到Azure Docker AppService。
如果我没有在AADB2C中启用OAuth2隐式流,那么我会使用AADB2C V2登录流得到以下错误:
error=unauthorized_client&error_description=AADB2C90057%3A+The+provided+application+is+not+configured+to+allow+the+%27OAuth%27+Implicit+flow.
然而,AADB2C站点建议不要使用此流,除非无服务器SPA需要。它建议MSAL。不过,我确实有一台ASP.NET-Core 3.1服务器。那么,我可以用什么来代替隐式流呢?(指针?(或者为什么隐式流仍然是必需的/最好的?
Blazor是一个单页应用程序,因此您可以使用隐式流,建议您启用隐式流。
与其他授权相比,隐式授权具有更大的风险,主要是因为它启用了执行活动代码的应用程序,并且由远程资源提供给浏览器。如果您正在计划SPA架构,请不要设置后端组件或尝试通过JavaScript调用Web API,而是使用隐式流来获取令牌。
我觉得我一定错过了什么,但似乎只要这是在AzureAdB2COpenIDConnectEventHandlers.cs:中硬编码的
context.ProtocolMessage.ResponseType = OpenIdConnectResponseType.IdToken;
隐式是Authentication.AzureADB2C.UI唯一可能的OIDC流。理论上应该可以覆盖它,也许是这样的?
services.Configure<OpenIdConnectOptions>(oidcOptions =>
oidcOptions.Events.OnRedirectToIdentityProvider = CustomRedirectToIdentityProviderDelegate);
但我不知道还有什么需要改变的。此外,我也想知道为什么会这样。