====== Authentication ======
===== Custom Authorization for (REST) services =====
For setting up a custom authentication service for API's (on service package) the following is needed:
^Rule type ^Description ^
| Authentication service rule (type custom)| Umbrella for the authentication |
| Timeout activity | Activity that optionally contains logic that will be run on timeout |
| Authentication Activity | Activity with purpose of authenticating the requestor. |
===== Configuring the Authentication service =====
- On Serivce tab: Indicate a timeout activity (implementation can be empty) and Indicate a Authentication Activity (needs implementation, described later.)
- On Custom tab: (choose Use externally stored credentials, must match the "Use external authentication" setting on operator page which is the result of the authentication activity)
* [[https://docs.pega.com/bundle/platform-23/page/platform/security/configure-login-using-custom-authentication-service.html | (docs.pega.com) Configure-login-using-custom-authentication-service]]
===== Implementing the Authentciation activity =====
The purpose of the activity is to do the actual authentication. Successfull authentication is indicated by a couple of parameters:
- pyOperPage must be a data-admin-operator-id (the identified operator) clipboard page (as java object)
- pyUserIdentifier -> operator identifier.
The following can be used in a java step (where myStepPage is the operator page):
tools.putParamValue("pyOperPage", myStepPage);
tools.putParamValue("pyUserIdentifier", myStepPage.getString("pyUserIdentifier"));
Likely a token of some sort is expected in the http headers send by client/user to authenticate.
In the authentication context the http headers can be read via following example:
ClipboardPage pxRequestorPage = tools.findPage("pxRequestor");
javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest) pxRequestorPage.getObject("pxHTTPServletRequest");
authToken = request.getHeader("Authorization");
In the example the Authorization header is fetch into a local variable authToken.
To summarize the flow of the activity:
- Get credentials from header
- Verify if credentials are valid and identify the client/consumer/user
- Iompose Operator Page (read from db or use template opertor)
- Indicate success by setting the expected pyOperPage and pyUserIdentifier. \\ (If either of the parameters are missing the result will be a 401 unauthorized response.)
* [[https://docs.pega.com/bundle/platform/page/platform/security/configure-custom-or-kerberos-login-authentication.html| (Docs.Pega.Com) Configure custom loginauthentication]]
* [[https://support.pega.com/question/how-authenticate-user-custom-authentication-activityll | (Support.Pega.Com) question on how to configure a authentication activity.]]
{{tag>[pega custom_authentciation API]}}