Dear C Ryan,

 I have made some  new test  with:

"try-All": true
or
"tryAll": true 

user kowalski has credentials  in handers:ppm and everest. 

{
"@class": "org.apereo.cas.services.RegexRegisteredService",
"serviceId": "^(http|https|imaps)://serwis.org/casphp*",
"name": "Test",
"id": 1,
"description": "Straggle Today!",
"authenticationPolicy": {
        "requiredAuthenticationHandlers": ["java.util.TreeSet", [ "everest" 
]],
        "criteria": {
              "tryAll": true       OR   "tryAll": true 
            "@class": 
"org.apereo.cas.services.AnyAuthenticationHandlerRegisteredServiceAuthenticationPolicyCriteria"
        },
        "@class": 
"org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy"
    }
}
With cas.propierties:
cas.authn.policy.required-handler-authentication-policy-enabled=true


Shortcut Debug log from CAS :
Examining credential  is not deterministic ,sometimes it strats from  
handler ppm  , sometimes from everest_365 ,  sometimes everest (probaly it 
is normal  or  mayby  i could  put    <handler>.order=0   but  it seems to 
be not enough , i would like thet servise  launch handler in deterministic 
way ) . This small example is showing  how it comes in my case:

2021-12-03 16:31:11,779 DEBUG 
[org.apereo.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler]
 
- <Examining credential [UsernamePasswordCredential(username=kowalski, 
source=null, customFields={})] eligibility for authentication handler [ppm]>

Here i cant see any  probe to  Examine credential do everest handler ( 
After it  had achived ppm    it was not trying  any exmination other 
handlers - one positive is that kowalski is not able use credential from  
ppm to  log to serwis.org/casphp )  

Ready go father...

2021-12-03 16:31:11,854 DEBUG 
[org.apereo.cas.authentication.policy.AtLeastOneCredentialValidatedAuthenticationPolicy]
 
- <Authentication policy is satisfied having found at least one 
authentication transactions>

...

2021-12-03 16:31:12,063 DEBUG 
[org.apereo.cas.authentication.policy.RequiredHandlerAuthenticationPolicyFactory]
 
- <Required authentication handlers for this service [Test] are [[everest]]>
2021-12-03 16:31:12,064 INFO 
[org.apereo.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit 
trail record BEGIN
=============================================================
WHO: kowalski
WHAT: https://serwice.org/casphp
ACTION: SERVICE_TICKET_NOT_CREATED
APPLICATION: CAS
WHEN: Fri Dec 03 16:31:12 GMT 2021
CLIENT IP ADDRESS: *****
SERVER IP ADDRESS: ****
=============================================================

>



Is is look like cas doesn't  event  try  examine other handlers  , but why  
i have  included tryAll  or try-All   in json file ? .
What more , i have seen  that if cas examine first  i.e everest_365 where 
kowalski  has not got credentials , cas is switched to next handler it 
started examine  next handlers. If it is ppm , user is succesfully 
authenticated  and no more action with everest is made.


I dont know if i explained well . Anyway thank you  if you have time to 
waste on this topic.





piątek, 3 grudnia 2021 o 12:59:32 UTC+1 artur miś napisał(a):

> My service is  test-1.json
>
>
> {
> "@class": "org.apereo.cas.services.RegexRegisteredService",
> "serviceId": "^(http|https|imaps)://serwis.org/casphp*",
> "name": "test",
> "id": 1,
> "description": "Straggle Today!",
> "authenticationPolicy": {
>         "requiredAuthenticationHandlers": ["java.util.TreeSet", [ 
> "everest" ]],
>         "criteria": {
>             "try-All": false, <- this probablly shoud make magic but it 
> didn't
>             "@class": 
> "org.apereo.cas.services.AnyAuthenticationHandlerRegisteredServiceAuthenticationPolicyCriteria"
>         },
>         "@class": 
> "org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy"
>     }
> }
>
>
> I am not included in cas.propierties any directive  like 
> cas.auth.policy.<xxx>:
>
> cas.authn.policy.any.try-All
> or
> cas.authn.policy.all.enabled
> or
> cas.authn.policy.source-selection-enabled
> or
> cas.authn.policy.required-handler-authentication-policy-enabled
>
>
>
> My  version Cas-overlay  is 6.3.2 on docker ,I  have 3 AD handlers  and   
> i test   nonserviced  login via https://exaple.org/casphp  and i can see 
> that   some times  it use  ppm handler or  second everest  one becouse 
> userx is in  both it semms to be ok.If i test fore service  via   REST API  
> (becouse  for this sandbox cas i not conected any servis phisicaly yet  so 
> i  test it via comand line  but it doesn't seem be a reason  of 
> problems),but i  trully blieve that you have some hack  to manage it. 
>
>
>
> TEST curl:
> from server side:
> cat api_test.bash
> #!/bin/bash
> ff=`curl -k -X POST -H 'Content-Type: Application/x-www-form-urlencoded' 
> -H 'Accept: applications/json' https://example.org/casphp/v1/tickets -d 
> 'username=userx&password=xxx'`
> echo $ff
> dd="curl -X POST -H \"Content-Type: Application/x-www-form-urlencoded\" -H 
> \"Accept: application/json\" https://example.org/casphp/v1/tickets/
> "$ff"?service=https://serwis.org/casphp";
> echo "dd:$dd"
> st=`$dd`
> echo "$st"
> vv="curl  -k  
> https://example.org/casphp/p3/serviceValidate?service=https://serwice.org/casphp&ticket=
> "$st
> echo "|$vv|"
> output=`$vv`1
> echo "|$output|"
>
> So i received:
>
> |<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
>     <cas:authenticationSuccess>
>         <cas:user>userx</cas:user>
>         <cas:attributes>
>             
> <cas:credentialType>UsernamePasswordCredential</cas:credentialType>
>             <cas:isFromNewLogin>true</cas:isFromNewLogin>
>             
> <cas:authenticationDate>2021-12-03T11:25:14.792314Z</cas:authenticationDate>
>             <cas:authenticationMethod>ppm</cas:authenticationMethod>
>             
> <cas:successfulAuthenticationHandlers>ppm</cas:successfulAuthenticationHandlers>
>  
> < - here i want to have deterministic everest ( not sometimes ppm  or 
> everest )
>             
> <cas:longTermAuthenticationRequestTokenUsed>false</cas:longTermAuthenticationRequestTokenUsed>
>             </cas:attributes>
>     </cas:authenticationSuccess>
> </cas:serviceResponse>|
>
>
> Restult is not deterministic  .User is receiving auth sometimes from ppm 
> sometimes from everest  . I dicsovered that if i restart cas container : I 
> coud have ppm    and  it seems that to te next restart keep ppm handler .If 
> i meke next restart od cas i can have ppm or everest. Between restart it 
> looks like it keep handler   chosed at the begginig. It is litle bit magic 
> for me.
>
>
>
>
>
>
>
> piątek, 3 grudnia 2021 o 08:58:43 UTC+1 artur miś napisał(a):
>
>> Could you please  if you  can show   cas.auth.policies too ,you have  
>> connectet to this solution ?
>>
>> AM
>> czwartek, 2 grudnia 2021 o 17:04:45 UTC+1 C Ryan napisał(a):
>>
>>> This is what I'm using...to be honest I can't seem to recall if this 
>>> does not bother trying the other resources...I think it does what we 
>>> originally wanted.
>>>
>>>
>>>  "authenticationPolicy": {
>>>         "requiredAuthenticationHandlers": ["LDAP"],
>>>         "criteria": {
>>>             "tryAll": false,
>>>             "_class": 
>>> "org.apereo.cas.services.AnyAuthenticationHandlerRegisteredServiceAuthenticationPolicyCriteria"
>>>         },
>>>         "_class": 
>>> "org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy"
>>>     },
>>> On 12/2/21 10:34 AM, artur miś wrote:
>>>
>>> Have you find out solution ?
>>>
>>> wtorek, 4 maja 2021 o 17:58:20 UTC+2 C Ryan napisał(a):
>>>
>>>> Folks,
>>>>
>>>>
>>>> Sorry for the likely stupid post, I swore I had sorted this prior. But 
>>>> I have 3 authentication sources defined. LDAP, Radius and Google MFA.
>>>>
>>>> I want to restrict a service to using - and most importantly trying - 
>>>> only an explicitly configured service. I.e. If I say LDAP as the Auth 
>>>> Resource, upon a failure I do _not_ want it to go ahead and try the other 
>>>> resources.
>>>>
>>>>
>>>> In cas.properties I have:
>>>>
>>>>
>>>> cas.authn.policy.source-selection-enabled=false
>>>>
>>>> cas.authn.policy.required-handler-authentication-policy-enabled=true
>>>>
>>>> cas.authn.policy.req.try-all=false
>>>>
>>>>
>>>> and an example service definition as below:
>>>>
>>>>
>>>> {
>>>>
>>>>     "_id": {
>>>>
>>>>         "$numberLong": "9999999999999"
>>>>
>>>>     },
>>>>
>>>>     "serviceId": "xxxxxxxxxx",
>>>>
>>>>     "name": "SSO CAS Server",
>>>>
>>>>     "expirationPolicy": {
>>>>
>>>>         "deleteWhenExpired": false,
>>>>
>>>>         "notifyWhenDeleted": false,
>>>>
>>>>         "notifyWhenExpired": false,
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceExpirationPolicy"
>>>>
>>>>     },
>>>>
>>>>     "acceptableUsagePolicy": {
>>>>
>>>>         "enabled": true,
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceAcceptableUsagePolicy"
>>>>
>>>>     },
>>>>
>>>>     "proxyPolicy": {
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.RefuseRegisteredServiceProxyPolicy"
>>>>
>>>>     },
>>>>
>>>>     "proxyTicketExpirationPolicy": {
>>>>
>>>>         "numberOfUses": {
>>>>
>>>>             "$numberLong": "0"
>>>>
>>>>         },
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceProxyTicketExpirationPolicy"
>>>>
>>>>     },
>>>>
>>>>     "serviceTicketExpirationPolicy": {
>>>>
>>>>         "numberOfUses": {
>>>>
>>>>             "$numberLong": "0"
>>>>
>>>>         },
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceServiceTicketExpirationPolicy"
>>>>
>>>>     },
>>>>
>>>>     "evaluationOrder": 99999,
>>>>
>>>>     "usernameAttributeProvider": {
>>>>
>>>>         "canonicalizationMode": "NONE",
>>>>
>>>>         "encryptUsername": false,
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceUsernameProvider"
>>>>
>>>>     },
>>>>
>>>>     "logoutType": "BACK_CHANNEL",
>>>>
>>>>     "environments": [],
>>>>
>>>>     "attributeReleasePolicy": {
>>>>
>>>>         "principalAttributesRepository": {
>>>>
>>>>             "mergingStrategy": "MULTIVALUED",
>>>>
>>>>             "attributeRepositoryIds": [],
>>>>
>>>>             "ignoreResolvedAttributes": false,
>>>>
>>>>             "_class": 
>>>> "org.apereo.cas.authentication.principal.DefaultPrincipalAttributesRepository"
>>>>
>>>>         },
>>>>
>>>>         "consentPolicy": {
>>>>
>>>>             "enabled": true,
>>>>
>>>>             "order": 0,
>>>>
>>>>             "_class": 
>>>> "org.apereo.cas.services.consent.DefaultRegisteredServiceConsentPolicy"
>>>>
>>>>         },
>>>>
>>>>         "authorizedToReleaseCredentialPassword": false,
>>>>
>>>>         "authorizedToReleaseProxyGrantingTicket": false,
>>>>
>>>>         "excludeDefaultAttributes": false,
>>>>
>>>>         "authorizedToReleaseAuthenticationAttributes": true,
>>>>
>>>>         "order": 0,
>>>>
>>>>         "_class": "org.apereo.cas.services.ReturnAllAttributeReleasePolicy"
>>>>
>>>>     },
>>>>
>>>>     "multifactorPolicy": {
>>>>
>>>>         "multifactorAuthenticationProviders": [],
>>>>
>>>>         "failureMode": "UNDEFINED",
>>>>
>>>>         "bypassEnabled": false,
>>>>
>>>>         "forceExecution": false,
>>>>
>>>>         "bypassTrustedDeviceEnabled": false,
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceMultifactorPolicy"
>>>>
>>>>     },
>>>>
>>>>     "accessStrategy": {
>>>>
>>>>         "order": 0,
>>>>
>>>>         "enabled": true,
>>>>
>>>>         "ssoEnabled": true,
>>>>
>>>>         "delegatedAuthenticationPolicy": {
>>>>
>>>>             "allowedProviders": [],
>>>>
>>>>             "permitUndefined": true,
>>>>
>>>>             "exclusive": false,
>>>>
>>>>             "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceDelegatedAuthenticationPolicy"
>>>>
>>>>         },
>>>>
>>>>         "requireAllAttributes": true,
>>>>
>>>>         "requiredAttributes": {},
>>>>
>>>>         "rejectedAttributes": {},
>>>>
>>>>         "caseInsensitive": false,
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy"
>>>>
>>>>     },
>>>>
>>>>     "authenticationPolicy": {
>>>>
>>>>         "requiredAuthenticationHandlers" : ["java.util.TreeSet", [ "LDAP" 
>>>> ]],
>>>>
>>>>         "criteria": {
>>>>
>>>>             "tryAll": false,
>>>>
>>>>             "_class": 
>>>> "org.apereo.cas.services.AllowedAuthenticationHandlersRegisteredServiceAuthenticationPolicyCriteria"
>>>>
>>>>         },
>>>>
>>>>         "_class": 
>>>> "org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy"
>>>>
>>>>     },
>>>>
>>>>     "properties": {},
>>>>
>>>>     "contacts": [],
>>>>
>>>>     "_class": "org.apereo.cas.services.RegexRegisteredService"
>>>>
>>>> }
>>>>
>>>> What am I missing?
>>>>
>>>> Thanks
>>>>
>>>>

-- 
- 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 cas-user+unsubscr...@apereo.org.
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/f285166b-b54a-4681-b38f-f3a1ee974529n%40apereo.org.

Reply via email to