Hello,

We succesfully configured CAS 5.2.2 to delegate authentication to an 
external provider through generic OAuth2 properties:

#(Optional) Friendly name for OAuth 2 provider, e.g. "This Organization" or 
"That Organization"
cas.authn.pac4j.oauth2[0].clientName=Giltza Oauth 2
cas.authn.pac4j.oauth2[0].id=xxx
cas.authn.pac4j.oauth2[0].secret=xxx
cas.authn.pac4j.oauth2[0].authUrl=https://eidasdes.izenpe.com:8082/trustedx-authserver/izenpe/oauth
cas.authn.pac4j.oauth2[0].tokenUrl=https://eidasdes.izenpe.com:8082/trustedx-authserver/izenpe/oauth/token
cas.authn.pac4j.oauth2[0].profileUrl=https://eidasdes.izenpe.com:8082/trustedx-resources/openid/v1/users/me
cas.authn.pac4j.oauth2[0].profileVerb=GET
#cas.authn.pac4j.oauth2[0].profilePath=

cas.authn.pac4j.oauth2[0].customParams.client_id=xxx
cas.authn.pac4j.oauth2[0].customParams.response_type=code
cas.authn.pac4j.oauth2[0].customParams.state=123456
cas.authn.pac4j.oauth2[0].customParams.acr_values=urn:safelayer:tws:policies:authentication:flow:bakq|urn:safelayer:tws:policies:authentication:flow:cert
cas.authn.pac4j.oauth2[0].customParams.scope=urn:izenpe:identity:global

cas.authn.pac4j.oauth2[0].profileAttrs.name=name
cas.authn.pac4j.oauth2[0].profileAttrs.surname1=surname1
cas.authn.pac4j.oauth2[0].profileAttrs.surname2=surname2
...

If we don't do anything else, the following error occurs:

[8/11/18 13:28:57:621 CET] 000000d3 SystemOut     O 2018-11-08 13:28:57,611 
DEBUG [org.pac4j.oauth.client.GenericOAuth20Client] - <profile: 
#OAuth20Profile# | *id: null* | attributes: 
{sub=978fa4ff4ea06ca1d39f35eb728b5a7e, cif=Q3890349H, country=ES, 
birthdate=EMPTY, key_usage=EMPTY, subject=SERIALNUMBER=99999988J, 
OID.2.5.4.4=#0C08464943544943494F, OID.2.5.4.42=#0C07434F5250524543, 
CN=CORPREC FICTICIO ACTIVO, 
OID.2.5.4.46=#131D2D646E692039393939393938384A202D63696620513338393033343948, 
OU=Condiciones de uso en www.izenpe.com nola erabili jakiteko, 
OU=Ziurtagiri korporatibo onartua - Cert. corporativo reconocido, O=IZENPE, 
C=ES, not_before=2017-03-16T12:15:29Z, tsl=S, issuer=CN=CA personal de AAPP 
vascas (2) - DESARROLLO, OU=AZZ Ziurtagiri publikoa - Certificado publico 
SCA, O=IZENPE S.A., C=ES, 
acr=urn:safelayer:tws:policies:authentication:flow:cert, surname1=FICTICIO, 
surname2=ACTIVO, email=EMPTY, dni=99999988J, tipoAfirma=0, 
firmaCualificada=S, naturalPersonSemanticsIdentifier=IDCES-99999988J, 
legalPersonSemanticsIdentifier=VATES-Q3890349H, serial_number=C6o=, 
given_name=CORPREC, pais=ES, not_after=2021-03-16T12:15:29Z, 
access_token=fc6ccaad705c4363cce28d89b7a3fd45897400c6134afd3c18d2d7a8bc8261a2, 
register_type=1, policy_identifier=1.3.6.1.4.1.14777.104.2, 
person_status=PF, domain=izenpe, organization=EMPTY, name=CORPREC FICTICIO 
ACTIVO, family_name=FICTICIO ACTIVO} | roles: [] | permissions: [] | 
isRemembered: false | clientName: null | linkedId: null |>
[8/11/18 13:28:57:621 CET] 000000d3 SystemOut     O 2018-11-08 13:28:57,611 
ERROR [org.apereo.cas.authentication.PolicyBasedAuthenticationManager] - 
<Authentication has failed. Credentials may be incorrect or CAS cannot find 
authentication handler that supports 
[org.apereo.cas.authentication.principal.ClientCredential@2cf6f06a[id=<null>]] 
of type [ClientCredential].>
[8/11/18 13:28:57:621 CET] 000000d3 SystemOut     O 2018-11-08 13:28:57,616 
INFO [org.apereo.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - 
<Audit trail record BEGIN
=============================================================
WHO: null
WHAT: Supplied credentials: 
[org.apereo.cas.authentication.principal.ClientCredential@2cf6f06a[id=<null>]]
ACTION: AUTHENTICATION_SUCCESS
APPLICATION: CAS
WHEN: Thu Nov 08 13:28:57 CET 2018
CLIENT IP ADDRESS: 127.0.0.1
SERVER IP ADDRESS: 127.0.0.1
=============================================================
[8/11/18 13:28:57:629 CET] 000000d3 SystemOut     O 2018-11-08 13:28:57,628 
ERROR [com.ibm.ws.webcontainer.servlet.ServletWrapper] - <SRVE0014E: 
Uncaught service() exception root cause dispatcherServlet: 
org.springframework.web.util.NestedServletException: Request processing 
failed; nested exception is 
org.springframework.webflow.execution.ActionExecutionException: Exception 
thrown executing 
org.apereo.cas.support.pac4j.web.flow.DelegatedClientAuthenticationAction@f990386
 
in state 'clientAction' of flow 'login' -- action execution attributes were 
'map[[empty]]'

In order to solve the problem we modified the class 
GenericOAuth20ProfileDefinition.java of pac4j-oauth-2.3.1.jar. We just set 
an id for the profile.

    @Override
    public OAuth20Profile extractUserProfile(String body) throws HttpAction 
{
        final OAuth20Profile profile = new OAuth20Profile();
        final JsonNode json = JsonHelper.getFirstNode(body, 
getFirstNodePath());

        if (json != null) {

   *         profile.setId(JsonHelper.getElement(json, "name"));*

            for (final String attribute : getPrimaryAttributes()) {
                convertAndAdd(profile, attribute, 
JsonHelper.getElement(json, attribute));
            }
            for (final String attribute : getSecondaryAttributes()) {
                convertAndAdd(profile, attribute, 
JsonHelper.getElement(json, attribute));
            }
            for (final Map.Entry<String, String> entry : 
getProfileAttributes().entrySet()) {
                final String key = entry.getKey();
                final String value = entry.getValue();
                convertAndAdd(profile, key, JsonHelper.getElement(json, 
value));
            }

        }
        return profile;
    }

We think this is very ugly. Is there any other way to solve this problem 
without modifying pac4j source code ???

Thank you so much!

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/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 on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/04383633-87ab-46ec-abda-70daee84928c%40apereo.org.

Reply via email to