【发布时间】:2021-08-03 05:55:00
【问题描述】:
场景: 从 API 获取消息 Hello World 的简单 Hello World Angular 应用。
我们不想暴露 Angular 应用的代码,因此我们需要在发布代码之前验证访问令牌,并且我们希望相同的访问令牌能够访问 API。
在我的脑海中,我认为这不应该由应用层来处理。它应该由网络服务器处理,但似乎 Angular OIDC 设施从未考虑到这一点。
现在我在托管 SPA 的服务器上有一个手工制作的中间件,它拦截所有调用(其中只有一个:获取 Angular 应用程序的调用),并在加载任何内容之前对 IdentityServer 进行 302。如果有令牌,它会设置一个标头,在应用程序中我们手动抓取令牌并将其用于 API 调用。
用这种方法我还没有弄清楚很多事情。如果令牌过期会发生什么?我应该使用 oidc-client;正确的?但我不会使用它来获取令牌,因为令牌已经存在,我会想使用那个令牌。
我自己没有得出这个结论;任何一个。 NGINX 确实有处理 OAuth2 的插件,因此无法访问代码。但是我拿到应用程序后做的事情让我有点困惑。
【问题讨论】:
-
不回答您的问题,但您无法保护代码 - 它在客户端上运行和解释 - 用户将能够检查它。您实际上是在询问如何通过密码请求预加载来保护您的整个站点。如果这是一种保守商业秘密的策略,它就行不通了——如果你想让你的代码安全,那就做服务器端处理。
-
@Matt,我不在乎员工是否可以访问该应用程序,就像我关心随机出现的人通过该应用程序并围绕端点和发起攻击一样。我的意思是,如果员工有权访问,他们无论如何都更有可能造成损害。就像我不会将重要的公司机密书留在地铁上一样,但新员工将不得不看到其中的一些机密。