问题
如果您将使用与以下示例类似的设置:
- 简单的 WebAPI
- Javascript OIDCClient 和用户管理器
是否可以保护其他客户端文件不被访问?例如,我有一个包含某些文件的目录,您需要某个角色才能访问它们。
是否可以在登录之前保护我的 SPA 不被访问?
或者是否有更好的解决方案让您最终获得受保护的 api、服务器上的文件夹/文件、SPA 和像 OIDCClient 中那样的静默更新机制?
问题
如果您将使用与以下示例类似的设置:
是否可以保护其他客户端文件不被访问?例如,我有一个包含某些文件的目录,您需要某个角色才能访问它们。
是否可以在登录之前保护我的 SPA 不被访问?
或者是否有更好的解决方案让您最终获得受保护的 api、服务器上的文件夹/文件、SPA 和像 OIDCClient 中那样的静默更新机制?
@dmccaffery 通过回答我的问题帮助了我,这是他对你们感兴趣的人的回答。
总而言之,使用 OIDCClient 进行 SPA 肯定是要走的路。暴露需要授权的东西应该使用 API 来完成。可以使用路由保护来保护 Angular 应用程序的某些部分。
它的工作方式如下:
访问令牌是 JWT 或不记名令牌(通常),并由 oidc 客户端添加到授权标头中的每个 HTTP 请求 - 当 Web API 接收到请求时,不记名令牌授权中间件将解析此 HTTP 标头并将调用令牌自省端点(可能还有用户信息端点)来验证令牌并检索用户声明……如果令牌被客户端操作,它将无效,并且将返回 HTTP 错误(通常是 403 )。如果令牌有效,则会创建声明身份并将其分配给 http 请求上下文。API 现在将拥有一个线程,该线程已经分配了一个代表该用户的身份。
他还指出了 2 门可能有用的复数课程: https ://www.pluralsight.com/courses/building-securing-restful-api-aspdotnet https://www.pluralsight.com/courses/oauth2-openid-连接角aspdotnet