采用
在公司内部系统汇中,涉及到服务之间调用进行身份认证的话,不少同学会选择AK/SK方式。
我们发现这一设计被过度使用,造成不必要的开销成本,同时也给服务调用方增加额外的开销。
在Microservice Architectures中更推荐的做法是Access token Pattern,
目前主流的API服务调用都采用Token Access方式,如大家熟知的OpenAI,GitHub等,包括HashCorp公司的Vault安全产品,其API调用都是基于Token。
就当前来说,AK/SK主要的场景集中在大的云厂商API调用上,这一设计有其自身需求,也有当时的技术限制,所以一直继承下来。而新型的SaaS等云服务厂商,也都是Token Access方式。
而在Token Access中,更推荐JWT,其自描述、过期设置、非对称验证等,更是服务间调用的首选。
所以我们的建议是:除非有非常充足的理由,不要使用AK/SK作为服务间调用的身份认证,这会给测试、开发增加负担,同时也消耗更多的资源。
JWT & Friends
- JWK Generator: https://jwkset.com/generate
- mkjwk: simple JSON Web Key generator - https://mkjwk.org/
- jwt-cli: https://github.com/mike-engel/jwt-cli
- jwt.io: https://jwt.io/
- Nimbus JOSE + JWT: https://connect2id.com/products/nimbus-jose-jwt
- Stack Auth: an open-source Auth0 alternative https://stack-auth.com/
References
- JWT RFC: https://datatracker.ietf.org/doc/html/rfc7519
- RFC 9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens - https://www.rfc-editor.org/rfc/rfc9068
- JWK(SON Web Key): https://datatracker.ietf.org/doc/html/rfc7517
- JWT Tokens: https://fusionauth.io/articles/tokens/
- What are JWT, JWS, JWE, JWK, and JWA? https://www.loginradius.com/blog/engineering/guest-post/what-are-jwt-jws-jwe-jwk-jwa/