自定义身份验证的帮助"/>
需要有关Istio / kubernates中的自定义身份验证的帮助
我是Istio的新手,我学到了很多东西,并将其应用于由许多微服务组成的项目中。在使用Istio时,我陷入了身份验证]
所以问题是这个。 Istio提供的身份验证涉及使用Google Oauth,Oauth或任何其他提供程序。然后,我们可以设置AuthPolicy并定义我们希望将其应用于哪些微服务。我已附上我的身份验证政策yaml,并且工作正常。现在可能在Job上进行的项目需要我也使用自定义身份验证。换句话说,我有一个处理身份验证的微服务。该auth微服务具有三个端点/ login,/ singup,/ logout和/ auth。通常,在我的应用程序中,在进行其他任何调用以确保用户已登录之前,我会先将/ auth作为中间件进行调用。微服务中的/ auth首次登录时会读取存储在cookie中的jwt令牌。放置并检查它是否有效。现在我的问题是如何添加我的自定义身份验证而不是使用Oauth?现在,如您所知,我附加的auth policy.yaml将在sidecar代理级别触发auth检查。因此我不需要将流量引导至入口网关;这意味着我的网关负责mtls,而sidecar负责jwt auth检查。因此,如何在policy.yaml中插入我的自定义身份验证或其他方式,例如“我不需要将所有流量重定向到入口网关”。
简而言之,请帮助我如何添加我的自定义auth jwt签入policy.yaml,如图片中所示或以任何其他方式,如果需要,还可以修改我的auth [micro-service] [1]代码。人们建议将流量重定向到入口网关,并在其中添加使节过滤器代码,以将流量重定向到auth微服务。但是,我不必将所有调用都重定向到入口网关并在那里运行envoy过滤器。我想通过定义策略yaml和jwt auth检查在sidecar代理级别使用policy.yaml来实现istio已经做的事情;因此我们不会将流量重定向到入口网关。
Np:我的所有微服务都在ClusterIP中,只有前端暴露在外面期待您的帮助/咨询
这里是我的身份验证策略代码。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: "/"
jwksUri: "/.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})
回答如下:在这里尝试似乎旨在改善Istio的AuthService项目,该项目目前是IMO的不足:
https://github/istio-ecosystem/authservice
[我认为Istio文档暗示它比实际支持更多-Istio将接受并验证authorization的JWT令牌,但它不提供authentication的任何方式。
更多推荐
需要有关Istio / kubernates中的自定义身份验证的帮助
发布评论