Hi,

Can you do some debugging in the ClientAuthenticationHandler to see how the
login process finishes?

Thanks.
Best regards,
Jérôme


On Fri, Jan 12, 2018 at 11:17 PM, FritzTheWonderMutt <
[email protected]> wrote:

>
> You are my new hero!
> A few things to note...
> You have to call reinit() on the builtClients after you add the new
> client. It looks like this:
>
> @Autowired
>     Clients builtClients;
>
>     @PostConstruct
>     public void addSteamOpenIdClient() {
>         builtClients.getClients().add(new SteamOpenIdClient());
>         builtClients.reinit();
>     }
>
> The SteamOpenIdClient and supporting code is a straight one-to-one rip-off
> of the old YahooOpenIdClient in the pac4j-openid project with the following
> exception.
> The RedirectActionBuilder gets the Steam endpoint and you turn off
> association attempts and attribute data fetch per this discussion:
> https://github.com/jbufu/openid4java/issues/192
>
> Looks like this:
>
> public class SteamRedirectActionBuilder implements RedirectActionBuilder {
>
>     private static final Logger logger = LoggerFactory.getLogger(
> SteamRedirectActionBuilder.class);
>
>     private static final String STEAM_OPENID_ENDPOINT = "
> https://steamcommunity.com/openid/";;
>
>     private SteamOpenIdClient client;
>
>     public SteamRedirectActionBuilder(final SteamOpenIdClient client) {
>         CommonHelper.assertNotNull("client", client);
>         this.client = client;
>     }
>
>     @Override
>     public RedirectAction redirect(final WebContext context) throws
> HttpAction {
>         try {
>             // perform discovery on the user-supplied identifier
>             final List discoveries = this.client.
> getConsumerManager().discover(STEAM_OPENID_ENDPOINT);
>
>             // attempt to associate with the OpenID provider
>             // and retrieve one service endpoint for authentication
>             this.client.getConsumerManager().setMaxAssocAttempts(0);
>             final DiscoveryInformation discoveryInformation = this.client.
> getConsumerManager().associate(discoveries);
>
>             // save discovery information in session
>             context.setSessionAttribute(this.client.
> getDiscoveryInformationSessionAttributeName(), discoveryInformation);
>
>             // create authentication request to be sent to the OpenID
> provider
>             final AuthRequest authRequest = this.client.
> getConsumerManager().authenticate(discoveryInformation,
>                     this.client.computeFinalCallbackUrl(context));
>
>
>             final String redirectionUrl = authRequest.getDestinationUrl(
> true);
>             logger.debug("redirectionUrl: {}", redirectionUrl);
>             return RedirectAction.redirect(redirectionUrl);
>         } catch (final OpenIDException e) {
>             throw new TechnicalException("OpenID exception", e);
>         }
>     }
>
>
> }
>
>
> Add steam to the loginProviders.html template fragment...
> <span th:case="steamopenid" class="fa fa-openid"></span>
>
> And that will get you a button on the login page that will send you
> through the Steam auth flow.
>
> *Next Problem:*
> When you return to CAS from Steam all the OpenId auth works correctly, but
> Authentication fails. I think CAS doesn't know what to do with a
> OpenIdCredentials maybe? Actual SteamId is at the end of the
> openid.claimed_id field.
>
> 01-12 13:07:39 DEBUG flow.DelegatedClientAuthenticationAction - Retrieved
> credentials: [#OpenIdCredentials# | discoveryInformation: OpenID2
> OP-endpoint:https://steamcommunity.com/openid/login
> ClaimedID:null
> Delegate:null | parameterList: client_name:SteamOpenIdClient
> openid.ns:http://specs.openid.net/auth/2.0
> openid.mode:id_res
> openid.op_endpoint:https://steamcommunity.com/openid/login
> openid.claimed_id:http://steamcommunity.com/openid/id/1234123412341234
> openid.identity:http://steamcommunity.com/openid/id/1234123412341234
> openid.return_to:https://auth-test.daybreakgames.com/login?
> client_name=SteamOpenIdClient
> openid.response_nonce:2018-01-12T21:07:18ZcPA3u0qpRI9mztuzYk/0SRwwTUU=
> openid.assoc_handle:1234567890
> openid.signed:signed,op_endpoint,claimed_id,identity,
> return_to,response_nonce,assoc_handle
> openid.sig:g5gKyXlD+B+Vd4k58VulQPlLYzk=
>  | clientName: SteamOpenIdClient |]
> 01-12 13:07:39 DEBUG flow.DelegatedClientAuthenticationAction - Retrieve
> service: [null]
> 01-12 13:07:39 WARN  authentication.PolicyBasedAuthenticationManager -
> Authentication has failed. Credentials may be incorrect or CAS cannot find
> authentication handler that supports [org.apereo.cas.
> authentication.principal.ClientCredential@752bf076[id=<null>]] of type
> [ClientCredential], which suggests a configuration problem.
>
>
> --
> - 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/34f64af8-8c93-4cd9-b5e2-
> 15f72d3a4506%40apereo.org
> <https://groups.google.com/a/apereo.org/d/msgid/cas-user/34f64af8-8c93-4cd9-b5e2-15f72d3a4506%40apereo.org?utm_medium=email&utm_source=footer>
> .
>

-- 
- 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/CAP279LyJp9719mz2VTGbQb1UzbUwTxJiDkoPHwzxbeCF_BLoaw%40mail.gmail.com.

Reply via email to