我有一个服务器端 Blazor 应用在受 AAD 身份验证保护的 Azure 应用服务上运行。 授权的 AD 用户(管理员(可以访问和使用该应用程序。
我想要实现的是允许其他用户仅访问 Blazor 应用的特定页面。 用户将从 WPF 应用访问应用,他们自己不一定是 AD 用户,而是 AD 应用程序用户(守护程序应用(。WPF 应用获取令牌 (v2.0( 并使用授权标头(持有者令牌(在浏览器中打开页面,但 Blazor 不会不解释请求中的身份验证标头,并威胁用户未经身份验证。 应用注册应该已正确设置,因为我能够在使用此方法时访问 API。
这种情况可能吗?如果是这样,知道我可能做错了什么吗?
这种情况听起来与一般建议背道而驰。
您确实不应该从 WPF 应用程序执行"守护程序应用程序"身份验证,因为它不是机密客户端应用程序(也不是守护程序应用程序(。它在用户设备上运行,向任何用户公开应用程序的凭据。 切勿从用户设备使用使用机密的身份验证流。
其次,Blazor 应用程序通常不能接受来自应用程序的请求。 WPF 应用程序应调用 API,而不是 UI 应用程序。
相反,您应该拥有的是:
- WPF 应用对用户进行身份验证,并代表用户获取 API 的令牌
- WPF 应用使用访问令牌调用 API
- API 验证访问令牌,授权用户和应用的访问权限,返回数据
Blazor 应用可以以类似的方式在其前端代码中使用相同的 API。 但我认为您无法将其放在客户端应用程序和 API 的中间。