OAuth2 client credentials

使用OAuth2客户端凭证中间件来保护HTTP端点的安全

The OAuth2 client credentials HTTP middleware enables the OAuth2 Client Credentials flow on a Web API without modifying the application. 这种设计将认证/授权的关注点从应用中分离出来,因此应用操作者可以采用和配置认证/授权提供者,而不影响应用代码。

配置

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: oauth2clientcredentials
  5. spec:
  6. type: middleware.http.oauth2clientcredentials
  7. version: v1
  8. metadata:
  9. - name: clientId
  10. value: "<your client ID>"
  11. - name: clientSecret
  12. value: "<your client secret>"
  13. - name: scopes
  14. value: "https://www.googleapis.com/auth/userinfo.email"
  15. - name: tokenURL
  16. value: "https://accounts.google.com/o/oauth2/token"
  17. - name: headerName
  18. value: "authorization"

元数据字段规范

字段详情Example
clientId您的应用程序的客户端ID,它是作为OAuth平台托管的凭证的一部分而创建的
clientSecret您的应用程序的客户密钥,它是作为OAuth平台托管的凭证的一部分而创建的。
scopes作用域的列表,通常用于应用程序中的授权,注意格式为空格分隔、大小写敏感的字符串https://www.googleapis.com/auth/userinfo.email
tokenURL客户端通过出示其访问许可或刷新令牌来获取access token的端点https://accounts.google.com/o/oauth2/token
headerName转发到您的应用程序的授权头名称“authorization”
endpointParamsQuery指定令牌端点请求的额外参数true
authStyle可选择指定端点希望 客户端ID & 客户端密钥 的发送方式。 请参阅下面可能的值表0

authStyle 的可能值

含义
1将POST body中的”client_id”和”client_secret”作为 application/x-www-form-urlencoded 参数发送。
2使用 HTTP Basic授权发送”client_id” 和 “client_secret” 这是 OAuth2 RFC 6749 节 2.31中描述的可选风格。
0是指通过两种方式的尝试,自动检测提供者想要的认证方式,并将成功的方式缓存起来,以备将来使用。

Dapr配置

To be applied, the middleware must be referenced in a configuration. See middleware pipelines.

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Configuration
  3. metadata:
  4. name: appconfig
  5. spec:
  6. httpPipeline:
  7. handlers:
  8. - name: oauth2clientcredentials
  9. type: middleware.http.oauth2clientcredentials

相关链接