Hello, 

I'm currently in the progress of upgrading from 6.x to 7.2. We've been 
trying to disable caching in the attribute repositories when using OIDC. 
This has not been disabled in our old deployment, but we need it now.

However, when a client tries to reauthenticate using a SSO session, the old 
attributes are returned. If another client tries to use the sso token, a 
list of the new and the old attributes are returned in the jwt. 

We already had to define IDs to avoid this bug 
https://groups.google.com/a/apereo.org/g/cas-user/c/0HjUqWsM0oE/m/X3s8loW8EgAJ.

In this example, the mail attribute behaves in this way.

Our service definitions are:

{
  "@class": "org.apereo.cas.services.OidcRegisteredService",
  "serviceId": "^https://.*";,
  "name": "Test2",
  "evaluationOrder": 222,
  "logoutType": "FRONT_CHANNEL",
  "attributeReleasePolicy": {
    "@class": "org.apereo.cas.services.ReturnAllAttributeReleasePolicy",
    "mergingPolicy": "REPLACE",
    "principalAttributesRepository" : {
      "@class" : 
"org.apereo.cas.authentication.principal.cache.CachingPrincipalAttributesRepository",
      "expiration" : 1,
      "timeUnit": "SECONDS",
      "mergingStrategy" : "REPLACE",
      "attributeRepositoryIds": ["java.util.HashSet", ["attribute-repo-1", 
"attribute-repo-2", "attribute-repo-3", "attribute-repo-4"]]
    }
  },
  "logoutUrl": "https://localhost/oidc/logout";,
  "clientSecret": "X",
  "clientId": "X",
  "bypassApprovalPrompt": true,
  "jwtAccessToken": true,
  "generateRefreshToken": true,
  "supportedGrantTypes":
  [
    "java.util.HashSet",
    [
      "password",
      "authorization_code",
      "refresh_token"
    ]
  ],
  "supportedResponseTypes":
  [
    "java.util.HashSet",
    [
      "code",
      "token"
    ]
  ],
"scopes" : [ "java.util.HashSet",
[ "openid", "profile", "email", ...]
]
}

and 

{
  "@class": "org.apereo.cas.services.OidcRegisteredService",
  "serviceId": "^https://.*";,
  "name": "Test",
  "evaluationOrder": 222,
  "logoutType": "FRONT_CHANNEL",
   "attributeReleasePolicy": {
    "@class": "org.apereo.cas.services.ReturnAllAttributeReleasePolicy",
    "mergingPolicy": "REPLACE",
    "principalAttributesRepository" : {
      "@class" : 
"org.apereo.cas.authentication.principal.cache.CachingPrincipalAttributesRepository",
      "expiration" : 1,
      "timeUnit": "SECONDS",
      "mergingStrategy" : "REPLACE",
      "attributeRepositoryIds": ["java.util.HashSet", ["attribute-repo-1", 
"attribute-repo-2", "attribute-repo-3", "attribute-repo-4"]]
    }
  },
  "logoutUrl": "https://localhost/oidc/logout";,
  "clientSecret": "Y",
  "clientId": "Y",
  "bypassApprovalPrompt": true,
  "jwtAccessToken": true,
  "generateRefreshToken": true,
  "supportedGrantTypes":
  [
    "java.util.HashSet",
    [
      "password",
      "authorization_code",
      "refresh_token"
    ]
  ],
  "supportedResponseTypes":
  [
    "java.util.HashSet",
    [
      "code",
      "token"
    ]
  ],
"scopes" : [ "java.util.HashSet",
[ "openid", "profile", "email", ...]
]
}

This is a very simlified version of our application yaml:


cas:
  authn:
    oauth:
      ...
    oidc:
      core:
        issuer: "https://${CAS_SERVER_NAME}/cas/oidc";
        claims-map:
          cn: name
          mail: mail
          ...
        user-defined-scopes:
          myscope: "cn,mail,..."
      discovery:
        grant-types-supported: 
authorization_code,password,client_credentials,refresh_token
        scopes: openid,profile,email,myscope,...
        claims:
          - cn
          - mail
          ...
    attribute-repository:
      core:
        expiration-time: "0"
        merger: "REPLACE"
      jdbc:
        - sql: SELECT u.cn, u.mail, ... FROM ...
          id: "attribute-repo-1"
          username: cn
          user: ...
          password: ...
          driverClass: org.postgresql.Driver
          url: ...
          dialect: org.hibernate.dialect.PostgreSQLDialect
          pool:
            min-size: 1
        - sql: select ... 
          id: "attribute-repo-2"
          ...
        - singleRow: false
          sql: SELECT X FROM ... 
          id: "attribute-repo-3"
          ...
        - sql: select ...
          id: "attribute-repo-4"
          ...

The response jwt looks like this: 

 "mail": [
    "[email protected]",
    "[email protected]"
  ]

-- 
- Website: https://apereo.github.io/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/62023a85-5452-4ab4-b1a0-d3cb3fc3d7c2n%40apereo.org.

Reply via email to