ClientSSO::Authorize( StrDict &vars, int maxLength, StrBuf &result )

The method that determines how the client handles the P4LOGINSSO request.

Virtual? Yes  
Class ClientSSO  
Arguments StrDict &vars A dictionary of keys and values
  int maxLength The maximum length of the resulting token. If longer, will be truncated.
  StrBuf &result A string buffer to store the token.
Returns 0 Returns non-zero if progress indicators are desired, 0 otherwise.

Notes

This will receive context in the form of a dictionary of keys and values, the maxLength of the resulting token and a StrBuf to store the token. If the token is larger the maximum length, the token is truncated. The return type determines how the client handles the P4LOGINSSO request:

Return value Behavior
CSS_PASS SSO succeeded (result is an authentication token) - the server will attempt to verify the token as authentication.
CSS_FAIL SSO failed (result will be logged as error message) - the server will log and report back the error written to the result StrBuf.
CSS_UNSET Client has no SSO support - the server will fall back to an alternative authentication mechanism or reject the login.
CSS_EXIT Stop login process - the login will be cancelled gracefully without an error.
CSS_SKIP Fall back to default P4API behavior - invoke P4LOGINSSO if set.

For the P4API to invoke the subclassed ClientSSO Authorize method, ClientUser::GetSSOHandler() must return an instance of the ClientSSO subclass. This may be done in either of two ways:

  • By setting an instance of ClientSSO on ClientUser with ClientUser::SetSSOHandler(), which causes the ClientSSO to be deleted when ClientUser is deleted.

  • By overloading ClientUser::GetSSOHandler() in a custom ClientUser subclass. If you chose to do this, the ClientSSO should have a lifetime that matches the ClientUser because the P4API will not attempt to delete the ClientSSO instance.

See also

ClientUser::GetSSOHandler() ClientUser::SetSSOHandler()