我们希望使用外部OAuth2服务器(IdentityServer4)开发Angular 2应用程序。
我们还想确定每个客户的唯一性。但是如何保护Angular 2 / Javascript源中的ClientID? 我们是否必须在这里使用CORS并检查请求的来源?我们是否必须为身份验证构建服务器端应用程序?
我们的移动应用程序应使用ClientID 12345 我们的Angular App应该使用ClientID 99999
但如果其他人试图使用ClientID 12345,则应该拒绝。
这里的最佳做法是什么? - 直接使用Angular进行身份验证? - 使用每个角度应用程序a Serverapp for Auth?
答案 0 :(得分:1)
您无法对公共客户端进行身份验证 - 没有安全的方法可以执行此操作。
特别是对于基于浏览器的客户端,您只能使用公共返回URL的所有权来标识客户端。
这是不可能的 - 而OAuth2并没有改变这种情况。
答案 1 :(得分:0)
OAuth2使用一对重要的键。
ClientID和ClientSecret都用于标识一个应用。 ClientID可以是公开的,它需要保留的秘密,好吧,秘密:)。
由于您的代码将是客户端,因此存在问题。我很确定OAuth2实现只适用于客户端。诚实地说,我并不相信它的安全性,因为无论你做什么,你做客户端的一切都是可见的。
我在这种情况下所做的是有一个小后端,这是客户端应用程序和OAuth2服务器之间的额外层。它可能是一个非常简单的MVC或非常简单的WebApi2,它只会提供前端使用的端点,但它的主要职责是从前端接听电话,添加密钥并创建OAuth2调用以供使用由实际的资源服务器。这样你的密钥永远不会存储在前端,你可以使用任何你想要的机制来保证它们在后端的安全。
只需让您始终在身份验证标题中传递这些内容,并始终通过 https 连接使用身份验证/资源服务器。