首页 文章

如何在OAuth2中保护ClientID?

提问于
浏览
1

我们想要开发一个带有外部OAuth2服务器(IdentityServer4)的Angular 2应用程序 .

我们还想确定每个客户的唯一性 . 但是如何保护Angular 2 / Javascript源中的ClientID?我们是否必须在这里使用CORS并检查请求的来源?我们是否必须为身份验证构建服务器端应用程序?

我们的移动应用程序应使用ClientID 12345我们的Angular应用程序应使用ClientID 99999

但是,如果其他人试图使用ClientID 12345,它应该被拒绝 .

这里的最佳做法是什么? - 直接使用Angular进行身份验证? - 使用每个角度应用程序Serverapp for Auth?

2 回答

  • 0

    您无法对公共客户端进行身份验证 - 没有安全的方法可以执行此操作 .

    特别是对于基于浏览器的客户端,您只能使用公共返回URL的所有权来标识客户端 .

    这是不可能的 - 而OAuth2并没有改变这种情况 .

  • 1

    OAuth2使用一对重要的键 .

    它是ClientID和ClientSecret,用于标识一个应用程序 . ClientID可以公开,这是需要保留的秘密,好吧,秘密:) .

    由于您的代码将是客户端,因此存在问题 . 我很确定OAuth2实现只适用于客户端 . 我不相信说实话是安全的,因为无论你做什么,你做客户端的一切都是可见的 .

    我在这种情况下所做的是有一个小后端,这是客户端应用程序和OAuth2服务器之间的额外层 . 它可能是一个非常简单的MVC或非常简单的WebApi2,它只会提供前端使用的 endpoints ,但它的主要职责是从前端接听电话,添加密钥并创建OAuth2调用以供使用由实际的资源服务器 . 这样,您的密钥永远不会存储在前端,您可以使用任何您希望在后端保护它们的机制 .

    只需让您始终在身份验证标头中传递这些内容,并始终通过 https 连接使用身份验证/资源服务器 .

相关问题