Creating a SAML Callback Handler is beyond the scope of this document. However, the following web pages may be helpful for this purpose:
A client-side configuration, which includes a SAML Callback Handler, can be viewed at the following URL:
An example of a SAML Callback Handler can be viewed and/or downloaded from the following URL:
An example application in this tutorial that uses a SAML Callback Handler can be found in Example: SAML Authorization over SSL (SA).
When writing SAML Callback Handlers for different security mechanisms, set the subject confirmation method to SV (Sender Vouches) or HOK (Holder of Key) and the appropriate SAML Assertion version depending on the SAML version and SAML Token Profile selected when setting the security mechanism for the service.
For example, the following code snippet for one of the SAMLCallbackHandlers listed above demonstrates how to set the subject confirmation method and sets the SAMLAssertion version to 1.0, profile 1.0.
if (callbacks[i] instanceof SAMLCallback) { try { SAMLCallback samlCallback = (SAMLCallback)callbacks[i]; /* Set confirmation Method to SV [SenderVouches] or HOK[Holder of Key] */ samlCallback.setConfirmationMethod (samlCallback.SV_ASSERTION_TYPE); if (samlCallback.getConfirmationMethod().equals( samlCallback.SV_ASSERTION_TYPE)) { samlCallback.setAssertionElement (createSVSAMLAssertion()); svAssertion_saml10 = samlCallback.getAssertionElement(); /* samlCallback.setAssertionElement (createSVSAMLAssertion20()); svAssertion_saml20 = samlCallback.getAssertionElement(); */ } else if (samlCallback.getConfirmationMethod().equals( samlCallback.HOK_ASSERTION_TYPE)) { samlCallback.setAssertionElement (createHOKSAMLAssertion()); hokAssertion_saml10 = samlCallback.getAssertionElement(); /* samlCallback.setAssertionElement (createHOKSAMLAssertion20()); hokAssertion_saml20 = samlCallback.getAssertionElement(); */ } } catch (Exception e) { e.printStackTrace(); } } else { throw unsupportedCallback; }