Using the Application to Application service, third-party applications can interact with Safeguard for Privileged Passwords in the following ways:
- Credential retrieval: A third-party application can retrieve a credential from the Safeguard for Privileged Passwords vault in order to perform automated functions on the target asset. In addition, you can replace hard coded passwords in procedures, scripts, and other programs with programmatic calls.
- Access request broker: A third-party application can initiate an access request on behalf of an authorized user so that the authorized user can be notified of the available request and log in to Safeguard for Privileged Passwords to retrieve a password or start a session.
A third-party application authenticates with Safeguard for Privileged Passwords using an API key and a client certificate, rather than the bearer token normally used to authenticate Safeguard for Privileged Passwords API requests. To make a request, you must first retrieve the API key for the application from Safeguard for Privileged Passwords using an authorized user account (that is, using bearer token authentication), and install the correct certificate on the host that will be making the request. The certificate must be installed in the certificate store of the authorized certificate user that will make the request.
Prerequisites
- Register the third-party application with Safeguard for Privileged Passwords. For more information, see Adding an application registration.
- Associate the third-party application with an existing Safeguard for Privileged Passwords certificate user.
To make a credential retrieval request from the third-party application
-
Retrieve the relevant API key for the application from Safeguard for Privileged Passwords. You can retrieve the API key using the desktop client or API.
Using the desktop client:
- Log in to the Safeguard for Privileged Passwords client as a Security Policy Administrator.
- Navigate to Administration Tools | Settings | External Integration | Application to Application.
- Click to display the API keys.
- On the API Keys dialog, select the API key and click .
Using the Safeguard for Privileged Passwords API:
-
Use the following URL to retrieve the details of the registered application from the Safeguard for Privileged Passwords API. The ID property in the response can then be used to retrieve the relevant API key. The Certificate Thumbprint property in the response identifies the certificate that the application must use to authentication the request.
https://<Appliance IP>/service/core/V2/A2ARegistrations?filter=AppName%20eq%20%22<ApplicationName>%22
-
Use the ID property in the response retrieved for the application registration to retrieve the API key for the selected account from the Safeguard for Privileged Passwords API:
https://<Appliance IP>/service/core/V2/A2ARegistrations/<Id>/RetrievableAccounts?filter=AccountName%20eq%20%22<account name>%22%20and%20SystemName%20eq%20%22<system name>%22&fields=ApiKey
- Ensure that the certificate matching the application's registered CertificateUserThumbprint is installed on the host that will be making the request.
- Ensure that the selected certificate is trusted by Safeguard for Privileged Passwords. That is, install the trusted root certificate in Safeguard for Privileged Passwords.
-
Create the application request, authenticating with the retrieved API key and the certificate thumbprint.
- Set the Authorization header in the request to A2A <API key>.
- The type can be Password or PrivateKey. Note that private keys can only be retrieved for service accounts.
-
Present the certificate with the request as appropriate for the invoking method. For example, when using the Invoke-WebRequest cmdlet, use the option:
-CertificateThumbprint <thumbprint>
To retrieve a credential, use the following request:
GET https://<ApplianceIP>/service/A2A/V2/Credentials?type=PasswordHost: <ApplianceIP>Content-Type: application/jsonAccept: text/plainAuthorization A2A <API Key>This URL returns a string response.
To make an access request broker request from the third-party application
-
Retrieve the relevant API key for the application from Safeguard for Privileged Passwords. You can retrieve the API key using the desktop client or API.
Using the desktop client:
- Log in to the Safeguard for Privileged Passwords client as a Security Policy Administrator.
- Navigate to Administration Tools | Settings | External Integration | Application to Application.
- Click to display the API keys.
- On the API Keys dialog, select the API key and click .
Using the Safeguard for Privileged Passwords API:
-
Use the following URL is retrieve the details of the registered application from the Safeguard for Privileged Passwords API. The Id property in the response can then be used to retrieve the relevant API key. The Certificate Thumbprint property in the response identifies the certificate that the application must use to authentication the request.
https://<Appliance IP>/service/core/V2/A2ARegistrations?filter=AppName%20eq%20%22<ApplicationName>%22
-
Use the ID retrieved for the application registration to retrieve the API key from the Safeguard API:
https://<Appliance IP>/service/core/V2/A2ARegistrations/<Id>/AccessRequestBroker/ApiKey
- Ensure that the certificate matching the application's registered CertificateUserThumbprint is installed on the host that will be making the request.
- Ensure that the selected certificate is trusted by Safeguard for Privileged Passwords. That is, install the trusted root certificate in Safeguard for Privileged Passwords.
-
Create the application request, authenticating with the retrieved API key and the certificate thumbprint.
- Set the Authorization header in the request to A2A <API key>.
-
Present the certificate with the request as appropriate for the invoking method. For example, when using the Invoke-WebRequest cmdlet, use the option:
-CertificateThumbprint <thumbprint>
-
To create an access request, use the following request:
POSTHost: <Appliance IP>Accept application/jsonContent-type application/jsonAuthorization A2A <API key>{"ForUser": "<user name>","ForUserId": <user id>,"ForProvider": “<providername>”,"SystemId": <system id>,"SystemName": "<system name>","AccountId": <account id>,"AccountName": "<account name>","AccessRequestType": "<request type>",“RequestedDurationDays”: <days>"RequestedDurationHours": <hours>,“RequestedDurationMinutes”: <minutes>,“RequestedFor”: “<date>,"ReasonCodeId": <reason code id>,"ReasonCode": "<reason name>","ReasonComment": "<reason comment>",“IsEmergency”: <bool>,“TicketNumber”: “<ticket>”}This URL returns the new request if successful.
Exceptions
Most of the fields in this access request match those in a normal access request, with the exceptions noted here:
The following fields are used to identify the target Safeguard for Privileged Passwords user that will be used to create the request. The result must uniquely identify a valid Safeguard for Privileged Passwords user for which the application has been granted permission to create an access request. If the search results in multiple matches or no matches, an error is returned.
- ForUserId: The database ID of a Safeguard for Privileged Passwords user. This takes priority if it contains a value.
- ForUser: The name of a Safeguard for Privileged Passwords user. This value is ignored if ForUserId contains a value.
- ForProvider: An optional provider name, that can be used to limit the search for ForUser.
The following fields are used to uniquely identify the target system. If the search results in multiple matches or no matches, an error is returned.
- SystemId: The database ID of a Safeguard for Privileged Passwords asset. This field is used to search for a matching asset in the following order:
- System Name: Exact match on the system name
- Network Address: Exact match on the network address
- String search: A string search on all string properties for the asset
The following fields are used to uniquely identify the target account. If the search results in multiple matches or no matches, an error is returned.
- AccountId: The database ID of a Safeguard for Privileged Passwords account. This takes priority if it contains a value.
- AccountName: This is ignored if AccountId contains a value. This field is used to search for a matching account in the following order:
- Account Name: Exact match on the account name
- String search: A string search on all string properties for the account
The following fields can be used to identify the reason code. If the search results in multiple matches or no matches, the reason code is set to null.
- ReasonCodeId: The database ID of a predefined reason code. This takes priority if it contains a value.
- ReasonCode: The name of a predefined reason code. This is ignored if ReasonCodeId contains a value.
Access request creation
Once the target user and account have been determined, the Application to Application service attempts to create the access request. Normal policy rules determine whether the attempt is successful.