Hi,
I was looking at pac4j-saml. It seems really complicated to what I've seen elsewhere. Was hoping that I could get some pointers on why things are done this way or maybe that we could make some improvements to simplify things a bit.
Keystore required?
pac4j-saml requires a keystore, which is something not needed by any other implementation I have seen. I was wondering why it is needed since it makes it more complicated to use.
Here's a couple other libraries I've seen
Parameters: assertionConsumerServiceUrl, issuer, idpSsoTargetUrl, certificate
Parameters: entityID, IdP metadata
Neither require a keystore, which makes me think it shouldn't be necessary.
Putting data back into identity provider?
I'm not sure why there's a step that talks about importing metadata into the identity provider. This is not typically necessary in my experience. Is this an optional step with pac4j?
// generate pac4j SAML2 Service Provider metadata to import on Identity Provider side
String spMetadata = client.printClientMetadata();
Here's an
video showing how to setup Google with Okta. In SAML language, Okta is an Identity Provider and Google is a Service Provider. You can see that it doesn't require putting any info from Google into Okta. It only requires putting info from Okta into Google
Interaction with filesystem required?
I'm not a big fan of the fact that the API force interaction with the file system. Providing the metadata as a String seems much more flexible. Then I can read it from the file system or any other location I may wish to retrieve it from.
// Configure a file containing the Identity Provider (IDP) metadata.
// It is the IDP's responsibility to make its metadata freely accessible.
client.setIdpMetadataPath("testshib-providers.xml");
Thanks,
Ben