我正在试图弄清楚如何使用大使在k8s上创建一个简单的API密钥保护代理,但似乎无法在此找到任何文档。
具体来说,我只是想设置它以便它可以接受带有API-KEY头的请求,对它进行身份验证,如果API-KEY对某些客户端有效,则将其传递给我的后端。
我建议你做以下事情:
---
apiVersion: v1
kind: Service
metadata:
name: auth-app
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: AuthService
name: authentication
auth_service: "auth-app:8080"
allowed_request_headers:
- "API-KEY"
spec:
type: ClusterIP
selector:
app: auth-app
ports:
- port: 8080
name: auth-app
targetPort: auth-app
apiVersion: ambassador/v1
kind: Mapping
name: myapp-mapping
prefix: /myapp/
service: myapp:8000
然后你需要在auth-app中有一个端点“/ myapp /”。您将在那里阅读API-KEY标题。如果密钥有效,则返回HTTP 200(OK)。然后大使将原始信息发送给myapp。如果auth-app返回除HTTP 200之外的任何其他内容,则Ambassador会将该响应返回给客户端。
apiVersion: ambassador/v1
kind: Mapping
name: login-mapping
prefix: /login/
service: login-app:8080
bypass_auth: true
Check this如果您想了解更多有关大使身份验证的信息
编辑:According to this answer如果你使用标题Authorization: Bearer {base64-API-KEY}
这是一个很好的做法。在大使中,默认情况下允许Authorization标头,因此您无需在allowed_request_headers字段中传递它。