gpt4 book ai didi

node.js - 在 Istio/kubernetes 中需要自定义身份验证方面的帮助

转载 作者:行者123 更新时间:2023-12-02 11:33:00 28 4
gpt4 key购买 nike

我是 Istio 的新手,我学到了很多东西并应用于我的项目,其中包含许多微服务。在使用 Istio 时,我陷入了身份验证

所以问题是这个。 Istio 提供身份验证,其中涉及使用 Oauth google、Oauth 或任何其他提供商。一旦我们这样做了,我们就可以设置 AuthPolicy 并定义我们希望它应用于哪些微服务。我附上了我的身份验证策略 yaml,它工作正常。现在可能在 Job 项目中也要求我使用自定义身份验证。换句话说,我有一个处理身份验证的微服务。此身份验证微服务具有三个端点/login 、/singup、/logout 和/auth。通常,在我的应用程序中,我会先调用/auth 作为中间件,然后再进行任何其他调用以确保用户已登录。我的微服务中的/auth 读取我首次登录时存储在 cookie 中的 jwt token 放置并检查它是否有效。现在我的问题是如何添加我的自定义身份验证而不是使用 Oauth?。现在你知道我附加的 auth policy.yaml 将在 sidecar 代理级别触发身份验证检查;所以我不需要将我的流量定向到入口网关;这意味着我的网关负责 mtls,而 sidecar 负责 jwt auth 检查。那么如何在 policy.yaml 或其他方式中插入我的自定义身份验证,以便“我不需要将所有流量重定向到入口网关”。

简而言之,请帮助我如何添加我的自定义 auth jwt check-in policy.yaml,如图片或任何其他方式,如果需要,也修改我的 auth [micro-service][1] 代码。人们建议将流量重定向到入口网关,并在那里添加特使过滤器代码,将流量重定向到 auth 微服务。但是我不必将所有调用重定向到入口网关并在那里运行特使过滤器。我想通过定义策略 yaml 和 jwt auth 检查发生在 sidecar 代理级别起诉 policy.yaml 来实现 istio 已经在做的事情;所以我们不会将流量重定向到入口网关。

Np:我所有的微服务都在 ClusterIP 中,只有我的前端暴露在外面
期待您的帮助/建议

这是我的 auth policy.yaml 代码

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
name: reshub
spec:
targets:
- name: hotelservice // auth check when ever call is made to this microservice
peers:
- mtls: {}
origins:
- jwt:
issuer: "https://rshub.auth0.com/"
jwksUri: "https://rshub.auth0.com/.well-known/jwks.json"
principalBinding: USE_ORIGIN

这是我的身份验证微服务代码,只是为了向您展示我当前检查 jwt 的日志
@app.route('/auth/varifyLoggedInUser',methods=['POST'])
def varifyLoggedInUser():
isAuthenticated = False
users = mongo.db.users
c = request.cookies.get('token')
token = request.get_json()['cookie']
print(token)
if token:
decoded_token = decode_token(token)
user_identity =decoded_token['identity']['email']
user = users.find_one({'email': user_identity,'token':token})
if user:
isAuthenticated = True
return jsonify({'isAuthenticated' : isAuthenticated,'token':c})

最佳答案

在这里尝试 AuthService 项目,它似乎旨在改进 Istio 的这一领域,目前 IMO 非常缺乏:

https://github.com/istio-ecosystem/authservice

我认为 Istio 文档暗示它支持的比实际支持的更多 - Istio 将接受并验证 的 JWT token 。授权但它没有提供任何东西 身份验证 .

关于node.js - 在 Istio/kubernetes 中需要自定义身份验证方面的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61567926/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com