【问题标题】:Desktop app opening a server-side Blazor page protected by AD auth打开受 AD auth 保护的服务器端 Blazor 页面的桌面应用程序
【发布时间】:2020-06-01 20:41:12
【问题描述】:

我有一个在受 AAD 身份验证保护的 Azure AppService 上运行的服务器端 Blazor 应用。授权的 AD 用户(管理员)能够访问和使用该应用程序。

我想要实现的是允许其他用户仅访问 Blazor 应用的特定页面。用户将从 WPF 应用程序访问该应用程序,他们自己不一定是 AD 用户,而是 AD 应用程序用户(守护程序应用程序)。 WPF 应用程序获取令牌 (v2.0) 并在浏览器中使用授权标头(不记名令牌)打开页面,但是 Blazor 不会解释请求中的身份验证标头并威胁用户未经身份验证。 应用注册应该已经正确设置,因为我可以在使用这种方法时访问 API。

这种情况可能吗?如果是这样,有什么想法我可能做错了吗?

【问题讨论】:

  • 我确实获得了正确的令牌并将其添加到授权标头中。但是,Blazor 应用似乎没有创建有效的 ClaimPrincipal 基于。

标签: azure-active-directory blazor daemon adal blazor-server-side


【解决方案1】:

这种情况听起来很不符合一般建议。

您确实不应该从 WPF 应用程序执行“守护程序应用程序”身份验证,因为它不是机密客户端应用程序(也不是守护程序应用程序)。它在用户设备上运行,向任何用户公开应用程序的凭据。 绝不应在用户设备上使用使用机密的身份验证流程。

其次,Blazor 应用程序通常不是可以接受来自应用程序的请求的应用程序。 您的 WPF 应用程序应该调用 API,而不是 UI 应用程序。

你应该拥有的是:

  1. WPF 应用对用户进行身份验证并代表他们获取令牌到您的 API
  2. WPF 应用使用访问令牌调用 API
  3. API 验证访问令牌,授权用户和应用访问,返回数据

Blazor 应用可以以类似的方式在其前端代码中使用相同的 API。 但我认为您无法将它放在客户端应用程序和 API 的中间。

【讨论】:

  • 这一切都说得通。想法是重用 Blazor 应用程序来为 MVP 显示简单的 UI,而不是在客户端上构建相同的东西。感谢您确认我担心 Blazor 应用无法使用应用程序凭据。
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 2020-04-03
  • 2014-12-23
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
相关资源
最近更新 更多