Я новичок в Istio, и я многому научился и применил свой проект, который состоит из множества микросервисов. Я застрял в аутентификации, когда дело доходит до использования Istio
Так что проблема заключается в следующем. Istio предлагает аутентификацию, которая включает использование Oauth Google, Oauth или любого другого провайдера. и как только мы сделаем это, мы можем настроить AuthPolicy и определить, к каким микросервисам мы хотим, чтобы он применялся. Я приложил свою политику аутентификации yaml, и она отлично работает. Теперь, возможно, проект на Job требует, чтобы я также использовал собственную аутентификацию. Другими словами, у меня есть один микросервис, который обрабатывает аутентификацию. Этот микросервис аутентификации имеет три конечные точки: / login, / singup, / logout и / auth. Обычно в моем приложении я вызываю / auth в качестве промежуточного программного обеспечения, прежде чем сделать какой-либо другой вызов, чтобы убедиться, что пользователь вошел в систему. / Auth в моей микросервисе читает токен jwt, который я сохранил в cook ie при входе в систему на первом месте и проверьте, если он действителен. Теперь мой вопрос заключается в том, как добавить мою пользовательскую аутентификацию, а не использовать Oauth ?. Теперь, как вы знаете, auth policy.yaml, который я подключил, вызовет проверку подлинности на уровне прокси-сервера sidecar; поэтому мне не нужно направлять мой трафик c на входной шлюз; это означает, что мой шлюз заботится о MTL, в то время как Sidecar заботится о проверке подлинности JWT. Итак, как подключить мой пользовательский аутентификатор в policy.yaml или другим способом, так что «мне не нужно перенаправлять все мои traffi c на входной шлюз».
Короче, пожалуйста, помогите мне с тем, как добавить мою собственную аутентификацию jwt check-in policy.yaml, как на картинке или любым другим способом, и при необходимости измените также мой код авторизации [micro-service] [1]. Люди предлагают перенаправить трафик c на входной шлюз и добавить туда код фильтра посланника, который перенаправит трафик c на аутентифицированные микросервисы. Но мне не нужно перенаправлять все мои вызовы на входной шлюз и запускать там фильтр посланников. Я хочу добиться того, что istio уже делает, путем определения политики, проверка yaml и проверки подлинности jwt происходит на уровне прокси-сервера sidecar в соответствии с policy.yaml; поэтому мы не перенаправляем трафик c на входной шлюз.
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})