Just wanted add an update based on the progress I've made so far...

I added the properties outlined in the docs, based on my configuration, to 
the top of the properties file (*before the cas.authn.jdbc entries*):
cas.authn.wsfed[0].identityProviderUrl=https://test.adfs.com/adfs/ls/
cas.authn.wsfed[0].identityProviderIdentifier=https://test.adfs.com/adfs/services/trust
cas.authn.wsfed[0].relyingPartyIdentifier=https://my.cas.com
cas.authn.wsfed[0].identityAttribute=E-Mail Address
cas.authn.wsfed[0].signingCertificateResources=file:/certs/adfs.cer
cas.authn.wsfed[0].attributesType=WSFED
cas.authn.wsfed[0].tolerance=10000
cas.authn.wsfed[0].autoRedirect=false
cas.authn.wsfed[0].name=ADFS

# Private/Public keypair used to decrypt assertions, if any.
echo "cas.authn.wsfed[0].encryptionPrivateKey=file:/certs/adfs-enc.key
echo "cas.authn.wsfed[0].encryptionCertificate=file:/certs/adfs-enc.crt
echo "cas.authn.wsfed[0].encryptionPrivateKeyPassword=NONE

When I look at the CAS logs, it identifies the following handlers for the 
request:
DEBUG [org.apereo.cas.authentication.PolicyBasedAuthenticationManager] - 
<Candidate resolved authentication handlers for this transaction are 
[[org.apereo.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler@6a543e09,
 
auth.CustomAuthenticationHandler@7ba1cdbe, 
org.apereo.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler@7c0e4e4e, 
org.apereo.cas.support.wsfederation.authentication.handler.support.WsFederationAuthenticationHandler@1a66be41]]>


I modified my existing CustomAuthenticationHandler to *not* support the 
users of this domain so that all of the handlers fail until it gets to 
the WsFederationAuthenticationHandler. I assumed at this point CAS would 
use the properties I've added to authenticate the user by delegating 
authentication to ADFS, but instead I get this:

DEBUG [org.apereo.cas.authentication.PolicyBasedAuthenticationManager] - 
<Authentication handler [ADFS] does not support the credential type 
[UsernamePasswordCredential(username=testUser@mydomain, source=null, 
customFields={})]. Trying next...>
cas_1                | 2019-09-19 21:39:51,804 DEBUG 
[org.apereo.cas.support.events.listener.LoggingCasEventListener] - 
<Authentication transaction failed for credential: 
[UsernamePasswordCredential(username=testUser@mydomain, source=null, 
customFields={})]

Does anyone know what needs to change here? Do I need to create another 
custom handler that extends *WsFederationAuthenticationHandler *and change 
it to also support *UsernamePasswordCredential*?

I'd appreciate any assistance.


On Wednesday, September 4, 2019 at 10:32:56 AM UTC-7, Bobby Esfandiari 
wrote:
>
> Hi Ray,
>
> I should've been a bit more specific. 
> I want to be able to hit CAS from web and mobile clients. 
> I can pass along a domain parameter with the request to determine whether 
> the authentication process should use the database or ADFS. 
>
> What I'd like to be able to do on the CAS side is extend the login 
> functionality to:
> 1 - run some logic to verify the domain for that user
> 2 - direct the request to either the DB authentication or ADFS 
> 3 - possibly do some manual manipulation of the attributes in the response
>
> I've looked through the ADFS Integration page and I only see info about 
> modifying the claims. 
> I already have a gradle overlay in place for running some custom logic 
> around the db authentication, but I'm not sure how to override the 
> functionality I'm looking for in points (1) and (2).
>
> On Wednesday, September 4, 2019 at 9:21:05 AM UTC-7, rbon wrote:
>>
>> Bobby,
>>
>> Authentication options are processed in the order they are listed in the 
>> properties.
>> See https://apereo.github.io/cas/6.0.x/integration/ADFS-Integration.html
>>
>> Ray
>>
>> On Tue, 2019-09-03 at 16:34 -0700, Bobby Esfandiari wrote:
>>
>> Hello, 
>>
>> I've been using CAS + DB Authentication for a number of services. Now I 
>> need to integrate ADFS for a new client's users, but I'd like to retain the 
>> ability to authenticate using the existing database. I've searched previous 
>> topics and the CAS docs, but could not find a direct answer.
>>
>> I'd like to know if this is possible and if so, what would be the best 
>> way of implementing it? I have some experience with the overlay 
>> functionality (if that's needed), but I do not know the classes that would 
>> have to be extended in this case.
>>
>> Thank you!
>>
>> -- 
>>
>> Ray Bon
>> Programmer Analyst
>> Development Services, University Systems
>> 2507218831 | CLE 019 | [email protected]
>>
>> I respectfully acknowledge that my place of work is located within the 
>> ancestral, traditional and unceded territory of the Songhees, Esquimalt and 
>> WSÁNEĆ Nations.
>>
>

-- 
- 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/28f1ce0a-98a9-4874-aadf-ae52ee685f4f%40apereo.org.

Reply via email to