0

マイクロサービス環境を機能させようとしています。config-server、eureka-server、zuul-server、およびサービスはすでにセットアップ済みです。セキュリティを処理するために、Cloud Foundry の UAA サーバーをインストールして実行しています。

UAA サーバーのセットアップ方法に関するドキュメントに続いて、Ldap グループをスコープとして使用するオプションがあり、UAA サーバーのログでそれらがどのように作成されるかを確認できますが、JWT トークンには入りません。Zuul は UAA サーバーに正しくプロキシしています。UAA で認証プロセスを実行し、Zuul で JWT トークンを取得してから、zuul はそれを背後のサービスにプロキシしますが、ログインしているユーザーのグループ/スコープがなければ、openid スコープのみです。クライアント構成で。何か不足していますか?または、これが機能する方法であり、トークンからユーザーのユーザー名を取得し、各サービスの各リクエストでアクセス権限を取得するという回避策を実装する必要がありますか?

ここに私のuaa.ymlがあります:

spring_profiles: ldap,mysql

disableInternalUserManagement: true

zones:
  internal:
    hostnames:
      - sso.example.com

oauth:
  user:
    authorities:
      - openid
      - scim.me
      - password.write
      - scim.userids
      - uaa.user
      - approvals.me
      - oauth.approvals
  clients:
    sso:
      secret: changeme!
      authorized-grant-types: authorization_code, refresh_token
      # How do I add the user groups as scopes?
      # Is it possible with this grant type?
      scope: openid
      authorities: uaa.resource

ldap:
  profile:
    file: ldap/ldap-search-and-bind.xml
  base:
    url: ldap://ldap.example.com:389
    mailAttributeName: mail
    mailSubstitute: '{0}@example.com'
    mailSubstituteOverridesLdap: true
    userDn: 'CN=Example User,OU=Admins,DC=example,DC=com'
    password: 'changeme!'
    searchBase: 'dc=example,dc=com'
    searchFilter: 'sAMAccountName={0}'
  groups:
    file: ldap/ldap-groups-as-scopes.xml
    searchBase: 'dc=example,dc=com'
    groupRoleAttribute: cn
    searchSubtree: true
    groupSearchFilter: 'member={0}'
    maxSearchDepth: 1
    autoAdd: true
  attributeMappings:
    first_name: 'givenName'
    last_name: 'sn'

smtp:
  host: mail.example.com
  port: 25

database:
  url: jdbc:mysql://mysql.example.com/uaa
  username: uaa
  password: changeme!

jwt:
  token:
    verification-key: |
      -----BEGIN PUBLIC KEY-----
      -----END PUBLIC KEY-----
    signing-key: |
      -----BEGIN RSA PRIVATE KEY-----
      -----END RSA PRIVATE KEY-----

login:
  url: https://sso.example.com/uaa/login
  branding:
    companyName: 'Example Company'
4

1 に答える 1

0

問題は、クライアントでスコープが構成されていないことに起因します。そのクライアントのスコープのリスト内のスコープのみがユーザー JWT に存在できます。このリストにスコープを追加しても、ユーザーが持っていないスコープを取得することはできず、クライアントのクライアント資格情報トークンにそれらのスコープが存在することにもなりません。

groups-as-scopes が構成されている場合、クライアントは、許可されたスコープのリストで構成された使用が予想される各スコープを持っている必要があります。

于 2016-06-16T21:34:07.417 に答える