【发布时间】:2017-07-23 06:38:40
【问题描述】:
我知道 Stack Overflow 上有足够的内容来回答这个问题,但我的主题与其他主题不同。 (有点相同但不相等)
我想听听社区对我所做的事情的看法,看看我是否可以在某些方面有所改进。
我目前正在为我的登录端点使用 BASIC 授权,因为它不需要复杂性并且它通过 https 所以它的方式很好。
示例:
GET - /api/login
授权:基本 BASE64String(用户名:密码)
我的一些 EndPoints 需要令牌才能被授予对资源的访问权限。我通过标头和 Https-Secured 发送这些令牌。
问题是我没有使用传统的方法来进行这些授权。下面是一些例子:
示例 1:
GET - /api/hardware/{PUBLIC_TOKEN}/getMe
授权-硬件:PRIVATE_TOKEN
此 EndPoint 不需要 Authorization-Hardware Header,但如果包含更多内容,则由 API 完成。 (这里不相关)
示例 2:
GET - /api/login/{id}
授权人:USER_TOKEN
否则,此端点是必要的,包括带有用户令牌的 Authorization-Person 标头来访问资源。 (注意这里不讲Token是如何产生的)
要访问 API 端点,需要 HTTPS 请求。
我为上面的自定义标头和端点指定了任意名称,只是为了说明我的授权架构是什么,名称与原始名称不匹配。所以不要打扰那些只关注架构的名称。
我的问题是:不遵循传统的方式是一件坏事吗?创建自定义授权标头在某种程度上是不好的(如果是为什么?)。
我发现这种方式更容易给予授权和传递令牌的安全方式,所有这些令牌都可以再次在平台中重新生成。
许多设备和移动应用程序已经在使用此架构,但它都在开发环境中,尚未投入生产。我担心这种非常规的做法会在未来影响 API 的用户。希望社区的想法可以帮助我改进这一点。
编辑:26/03/2017
我想知道它是否会更好以及为什么以协议中描述的方式实现,因为当需要多个授权时比您拥有自定义标头并想要检索时更难从标头中获取它的价值。
按照协议,您应该像这样使用授权标头:
Authorization: <type> <value>
示例:
GET - /api/login/{id}
授权:用户USER_TOKEN
但我只是看不到我在此之后获得了什么,因为在获取它的值时会出现一个字符串,或者在示例情况下它会返回用户令牌。
使用自定义标头可以更轻松地验证令牌。遵循协议方式的多重授权也会让人头疼。
【问题讨论】:
-
我真的需要一些帮助我越来越接近完成产品!
标签: api http http-headers authorization restful-authentication