Политика Istio не аутентифицирует JWT

Я реализовал политику istio, поэтому пользователям потребуется токен JWT для доступа к моему бэкэнду и сервисам админ-бэкэнда. Однако он не пропускает меня с действующим токеном. Я запускаю istio-demo на minikube и ничего не сделал со своим развертыванием, кроме настройки выхода для auth0. Затем, когда я подхожу к применению своей политики, я больше не могу получить доступ к этим службам с моими запросами.

rbac-policy.yaml

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: rbac
  namespace: default
spec:
  targets:
    - name: backend
    - name: admin-backend
  peers:
    - mtls: {}
  origins:
    - jwt:
        issuer: "https://jor2.eu.auth0.com/"
        jwksUri: "https://jor2.eu.auth0.com/.well-known/jwks.json"
  principalBinding: USE_ORIGIN

Это то, что передается в моих заголовках запросов get и post (значение HEADERS):

{
  "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik5VVkdPREl4UVRoQlFrWTJOakV4UWpnek1FSkVNalZCUVRjM1FUaEJOVFk0UVRZM016aEVNQSJ9.eyJpc3MiOiJodHRwczovL2pvcjIuZXUuYXV0aDAuY29tLyIsInN1YiI6IlRsdmg5OFl4Wkc2anFpNmRVclhlN2RIejVwZzFiaHR1QGNsaWVudHMiLCJhdWQiOiJodHRwczovL3JiYS5jb20vYWRtaW4iLCJpYXQiOjE1NTI1NTU0NjUsImV4cCI6MTU1MjY0MTg2NSwiYXpwIjoiVGx2aDk4WXhaRzZqcWk2ZFVyWGU3ZEh6NXBnMWJodHUiLCJzY29wZSI6IkFkbWluIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIn0.grrHHrS_Ey63Tmo1KL9gUmelouYaSj0rPlv04tpJxBeVct-KRA30I1ieVgncmojRBXcdgvfpWKjeGLbb2Q7X6QwkdT0LyO3jmOBgabcTIsnnbCEg4gywc7WrN5_H_bWNiToIsouagJqiAOQ35wrVa9SVK_InR0QVEnV3yvuug042yMiMmFriG6qN2J8HPgXCE440hpSXBIIKuoBqmNZGSjZV3YvQXaLmigCNl2_PUXb52urrQqHEh06dMIT2FFfD5Cdc1RGrRT2o4krMWF2mJMOWXK1sgEOv4FfsOrdkPka24MuGViED514EoJ9a2n2QEK10zxDtv42opYT9Wjmubg"
}

функция с правильным заголовком (должна работать), но не отображает никаких ответов.

@app.route("/view_patients/", methods=['GET', 'POST'])
def view_patients():
    global HEADERS
    patients = invoke_backend(page_name="view_patients", headers=HEADERS)
    return render_template(
        'view_patients.html',
        patients=patients
    )

Проверьте, не работает ли токен на недопустимом jwt:

@app.route("/test/view_patients/", methods=['GET', 'POST'])
def test_view_patients_invalid_jwt():
    jwt = "1nv4l1DJwT"
    header = {
        'Authorization': "Bearer " + jwt
    }
    patients = invoke_backend(page_name="view_patients", headers=header)
    return render_template(
        'view_patients.html',
        patients=patients
    )

журналы прокси


person Annihil8    schedule 14.03.2019    source источник


Ответы (1)


Я понял это несколько дней назад и забыл опубликовать ответ. Мне нужно было удалить mtls из конфига.

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: auth-policy
spec:
  targets:
    - name: backend
    - name: admin-backend
  origins:
    - jwt:
        issuer: "https://jor2.eu.auth0.com/"
        jwksUri: "https://jor2.eu.auth0.com/.well-known/jwks.json"
  principalBinding: USE_ORIGIN
person Annihil8    schedule 17.03.2019
comment
У меня такая же конфигурация, как у urs, у меня есть приложение с весенней безопасностью oauth2, я настроил другую политику приложения, она просто игнорируется, я могу вызвать api без токена, не могли бы вы поделиться своим проектом? - person Tiago Medici; 31.05.2020
comment
как только я установил контроль доступа на основе ролей, получил 503, я следил за настройкой ur о выходе и ролях и т.д., в случае, если я получил 503, мое репозиторий github.com/jamesmedice/Istio-Rbac-Policy-Mesh, если вы можете проверить наличие идея, что отсутствует или неверно, я ценю, спасибо, OBS: моя безопасность oauth2 находится на локальном компьютере - person Tiago Medici; 02.06.2020