我有一个用 Angular 编写的 SPA,它与一些 API(也归我所有)通信以完成所有工作。为了保护应用程序,我使用带有 AAD 的 Identity Server 4 作为单个外部提供程序。
如果用户在导航到路由之前尚未经过身份验证,我在 Angular 中使用路由保护来启动 oidc 隐式流。这一切都很好——在可以访问任何“安全”路由之前,用户必须使用 AAD 登录。
该应用程序的一个新要求是只允许我们 AAD 租户中的一部分用户使用该应用程序。在 AccountController.ExternalLoginCallback(来自快速入门 UI)中,我可以使用从 AAD 返回的声明来做出此决定。一旦我确定了它是否是一个有效用户,我就无法弄清楚如何从那里做认证失败并将响应返回给我的 SPA,这将允许我显示“未经授权”的视图。
这可能吗?我的工作流程是否需要更改以满足这一新要求,或者有没有办法将此自定义逻辑注入到 Identity Server 的某个地方?