我开发了一个 API。我很困惑,我已经阅读了几天的文章。实际上我的问题与这些很接近,但并不准确(可能是它们的组合);
保护将从不同客户端访问
的 REST API 为极少数客户端提供安全的无登录 REST API
我需要为我的 API 提供安全性。API 将由客户端 3rd 方应用程序使用。我在下面附上了一个模式。
我该怎么办?
带有 SSL\TLS 的 HTTP-Basic、带有 SSL\TLS 的 HTTP-Digest、OAuth 2.0 或其他应该是什么?
编辑(2015-03-25):
这部分被放弃了。查看下面的“编辑(2015-04-01)”
我决定实施 SSL + OAuth 2.0(资源所有者密码凭证授予)。如果您认为该场景不方便,请告知我。
+----------+
| Resource |
| Owner |
| |
+----------+
v
| Resource Owner
(A) Password Credentials
|
v
+---------+ +---------------+
| |>--(B)---- Resource Owner ------->| |
| | Password Credentials | Authorization |
| Client | | Server |
| |<--(C)---- Access Token ---------<| |
| | (w/ Optional Refresh Token) | |
+---------+ +---------------+
Figure 5: Resource Owner Password Credentials Flow
图 5 所示的流程包括以下步骤:
(A) 资源所有者向客户端提供其用户名和密码。
(B) 客户端通过包含从资源所有者收到的凭据,从授权服务器的令牌端点请求访问令牌。发出请求时,客户端向授权服务器进行身份验证。
(C) 授权服务器对客户端进行身份验证并验证资源所有者凭据,如果有效,则颁发访问令牌。
编辑(2015-04-01):
我已经实现了 OAuth 2.0 Client Credentials。现在我正在寻找如何为客户端 API 请求实现 SSL 证书。
客户端凭证授权类型必须仅由机密客户端使用。
+---------+ +---------------+
| | | |
| |>--(A)- Client Authentication --->| Authorization |
| Client | | Server |
| |<--(B)---- Access Token ---------<| |
| | | |
+---------+ +---------------+
Figure 6: Client Credentials Flow
图 6 所示的流程包括以下步骤:
(A) 客户端向授权服务器进行身份验证,并从令牌端点请求访问令牌。
(B) 授权服务器对客户端进行身份验证,如果有效,则颁发访问令牌。