将DuendeIdentityServer与客户端混合使用,包括BlazorWASM和ASP.NETWeb窗体

wvyml7n5  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(180)

我们有一个遗留的Web Forms应用程序,我们打算慢慢地一个模块一个模块地移植到Blazor WASM。由于我们没有能力立即在Blazor中重建所有内容,我们暂时必须同时运行Blazor和Web Forms应用程序。对于最终用户来说,这需要看起来无缝--也就是说,他们不会注意到他们在两者之间切换。
我首先要解决的是登录过程。我们已经决定使用IdentityServer来构建一个外部身份提供程序,Blazor和Web Forms应用程序都将与之通信。目前我只是在尝试创建一些概念模型的验证,看看我是否真的可以让它工作。
我已经成功地构建了一个示例Blazor WASM应用程序和一个示例Web窗体应用程序,这两个应用程序都与同一个IdentityServer应用程序通信以进行登录。这两个应用程序在初始加载时都会识别用户是否已登录IdentityServer,并相应地显示或隐藏索赔页面。
如果我注销Web窗体应用程序,然后在Blazor应用程序中刷新页面,Blazor应用程序会要求我再次登录-这正是我想要的。

BackChannelLogoutUri = "https://localhost:7260/bff/backchannel"

在我的Blazor客户端的IdentityServer Config.cs文件中。
我不知道如何让我的Web窗体应用程序以类似的方式运行。如果我注销Blazor应用程序,Web窗体应用程序仍保持登录状态。我不确定Web窗体应用程序的等效FrontChannelLogoutUri或BackChannelLogoutUri是什么。
我用作模板的Web窗体示例应用程序是Duende自己提供的示例,如下所示:
https://github.com/DuendeSoftware/Samples/tree/main/various/clients/Owin

jq6vz3qz

jq6vz3qz1#

(首先,这些“技术迁移”项目很坚韧,所以我祝你好运!)
您需要有两个“前端通道服务器端客户机”,因此BackChannelLogoutUri设置是无用的。因此您需要注意Identity Server文档的这一部分。
或者(正如我在类似项目中所做的一样),您可以在其他UI客户端中调用服务API,然后使用SignalR之类的技术通知任何其他UI中注销用户的所有打开的浏览器选项卡,以触发注销。

相关问题