REST API
(只在企业版中提供该功能)
PMP的API可以让任意应用直接和Password Manager Pro交换和集成。API是REST(REpresentational State Transfer)的。你可以使用API添加资源和账户、获取密码、获取资源/账户信息,以及通过编程方法更新密码。
前提条件
在PMP中创建API用户账号
这是使用API的第一步。API账户只用于通过API进行密码管理。每个API用户只对应一个终端(从那里使用API访问PMP的服务器或桌面机,以此来唯一确保账户的唯一性。例如user@hostname)
创建API用户账户
- 在“管理 >> 用户”中点击“创建API用户”
- 在“添加API用户”弹出窗口中输入“用户名”。
- 输入从哪里访问PMP的主机的主机名。
- “全名”表示API用户显示名称,例如在报表、审计等地方显示的名称。
- 选择该API用户的访问级别 - 管理员/密码管理员/密码用户
- 如给你选择了“管理员”或“密码管理员”,指定访问范围。如果你选择“拥有的和共享的密码”,那么该管理员/密码管理员就能查看他拥有或其他人共享给他的密码。也可以让API用户成为超级管理员,那么就选择“系统中所有的密码”。
- 不用设置“SSH CLI访问的公开密钥”和“XML-RPC API访问的SSL证书”选项。
- 选中REST API后的“启用”
- 页面将显示认证令牌,点击“生成”链接来生成API令牌。请记录该令牌,因为只显示一次。如果你忘记了,要在这里重新生成一个新的。
- 设置“认证令牌有效期”,可以选择“永久有效”,或者指定到期日期。
重要说明
API用户和访问主机是绑定的。如果你要从多个地方使用API访问PMP,那么就要创建多个API用户。如果你要从一个主机使用多个用户访问,那么就创建多个用户,绑定同一个主机即可。
API汇总
PMP提供以下API:
GET
获取资源、账户、密码、账户/资源信息
PUT
更改密码
POST
创建资源和账户
如何使用API?
调用API
通过HTTP POST、GET和PUT请求。请求的URL和表单参数都应该是编码的。所有过API都要认证令牌,这是必需的。
支持的格式
PMP支持JSON格式,URL构成如下:
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources/<资源ID>/accounts/<账户ID>?AUTHTOKEN=(上面步骤中生成的API认证令牌)
1.获取用户拥有和共享的资源
描述:
用来列出一个用户拥有的和其他人共享给他的密码
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
GET
输入数据:
无
请求示例
curl -k https://192.168.xx.xx:7272/restapi/json/v1/resources?AUTHTOKEN=B9A1809A-5BF7-4459-9ED2-8D4F499CB902
输出示例
在输出中(如下所示),你将看到更改API用户的拥有和共享给的资源列表。
2.获取资源包含的账户
描述
获取资源包含的资源列表。资源ID要从获取资源API获取(见上面)。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources/<资源ID>/accounts?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
GET
输入数据:
无
请求示例
curl -k https://192.168.xx.xx:7272/restapi/json/v1/resources/303/accounts?AUTHTOKEN=B9A1809A-5BF7-4459-9ED2-8D4F499CB902
输出示例
在输出中(如下所示),你将看到改API用户的拥有和共享给的账户列表。
说明:如果启用了密码访问控制,而且密码正好被使用,那么在输出中将显示为[ In use ]。
3.获取账户信息
描述
显示某个账户的详细信息。要提供从上面API获取的资源ID和账户ID。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources/<资源ID>/accounts/<账户ID>?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
GET
输入数据:
无
请求示例
curl -k https://192.168.xx.xx:7272/restapi/json/v1/resources/303/accounts/307?AUTHTOKEN=B9A1809A-5BF7-4459-9ED2-8D4F499CB902
输出示例
4.获取资源包含账户的密码
描述
获取资源的某个账户的密码。要提供从上面API获取的资源ID和账户ID。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources/<资源ID>/accounts/<账户ID>/password?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
GET
输入数据:
有的时候,获取密码要去提供原因,或者启用了工单系统,那么你要按照下面的例子提供原因和工单ID
INPUT_DATA={"operation":{"Details":{"REASON":"Need the password to Login Windows Server","TICKETID":"7"}}}
请求示例
curl -k https://192.168.xx.xx:7272/restapi/json/v1/resources/303/accounts/307/password?AUTHTOKEN=B9A1809A-5BF7-4459-9ED2-8D4F499CB902
输出示例
说明:如果获取密码时出现问题,将显示包含原因的消息。
5.更改密码
描述
更改一个资源某个账户的密码。要提供从上面API获取的资源ID和账户ID。如果启用了工单系统,你需要提供工单ID。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources/<资源ID>/accounts/<账户ID>/password?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
PUT
输入数据:
需要提供新密码、重置类型和原因等。重置类型为LOCAL或REMOTE。
INPUT_DATA={ "operation":{ "Details":{ "NEWPASSWORD":"Test@12345$", "RESETTYPE":"LOCAL", "REASON":"Password Expired" "TICKETID":"7" } } }
请求示例
输出示例
{ "operation":{ "name":"CHANGE PASSWORD", "result":{ "status":"Success", "message":"Password changed successfully" } } }
说明:如果在更改密码等时候出现问题,将显示包含原因的消息。
6.创建新资源
描述
在PMP中创建新资源
输入数据:
输入数据包括资源、账户名称、资源类型、密码、URL、描述、说明以及其他附加字段。你可以添加40个自定义字段(资源和账户各20个)其中资源名称、账户名称、资源类型和密码是必需字段。
INPUT_DATA={ "operation":{ "Details":{ "RESOURCENAME":"Windows Server", "ACCOUNTNAME":"Administrator", "RESOURCETYPE":"Windows", "PASSWORD":"Test123#@!", "NOTES":"Testing API", "RESOURCEURL":"http://windowsserver/adminconsole", "RESOURCECUSTOMFIELD":[ { "CUSTOMLABEL":"Secure Resource", "CUSTOMVALUE":"YES" } ] } } }
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
POST
请求示例
curl -X POST -k -H "Content-Type: text/json" 'https://192.168.39.29:7272/restapi/json/v1/resources?AUTHTOKEN=B9A1809A-5BF 7-4459-9ED2-8D4F499CB902' -d 'INPUT_DATA={"operation":{"Details":{"RESOURCENAME":"Windows Server","ACCOUNTNAME":"Administrator","RESOURCETYPE":"Windows","PASSWORD" :"Test123#@!","NOTES":"Testing API","RESOURCEURL":"http://windowsserver/adminconsole","RESOURCECUSTOMFIEL D":[{"CUSTOMLABEL":"Secure Resource","CUSTOMVALUE":"YES"}]}}}'
输出示例
{ "operation":{ "name":"CREATE RESOURCE", "result":{ "status":"Success", "message":"Resource Windows Server has been added successfully" } }
说明:如果你要添加资源到管理员/密码管理员名下,还要添加“OWNERNAME”字段到资源信息中。当添加资源到AD用户,用户名格式必需是:“域名\\用户名”。
INPUT_DATA={
"operation":{
"Details":{
"RESOURCENAME":"Windows Server",
"ACCOUNTNAME":"Administrator",
"RESOURCETYPE":"Windows",
"PASSWORD":"Test123#@!",
"NOTES":"Testing API",
"RESOURCEURL":"http://windowsserver/adminconsole",
"OWNERNAME":"admin",
"RESOURCECUSTOMFIELD":[
{
"CUSTOMLABEL":"Secure Resource",
"CUSTOMVALUE":"YES"
}
]
}
}
}
说明:如果要把添加到资源同时添加到一个资源组中,需要附加字段“RESOURCEGROUPNAME”。如果资源组以及存在,资源将添加到那个组。如果不存在,将创建新组。
INPUT_DATA={ "operation":{ "Details":{ "RESOURCENAME":"Windows Server", "ACCOUNTNAME":"Administrator", "RESOURCETYPE":"Windows", "PASSWORD":"Test123#@!", "NOTES":"Testing API", "RESOURCEURL":"http://windowsserver/adminconsole", "RESOURCEGROUPNAME":"Windows Servers", "RESOURCECUSTOMFIELD":[ { "CUSTOMLABEL":"Secure Resource", "CUSTOMVALUE":"YES" } ] } } }
7.获取资源包含账户的ID
描述
如果要获取一个账户的ID,你需要提供资源名称和账户名称。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources/resourcename/<资源名称>/accounts/accountname/<账户名称>?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
GET
输入数据:
无
请求示例
输出示例
{ "operation":{ "name":"GET_RESOURCEACCOUNTNAME", "result":{ "status":"Success", "message":"Resource id and account id fetched successfully for the given resource name" }, "Details":{ "RESOURCEID":"303", "ACCOUNTID":"307" } } }
8.删除资源
描述
删除指定ID的资源。资源ID可以通过GET RESOURCES API获取(见上面)。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/resources/<资源ID>?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
DELETE
输入数据:
无
请求示例
输出示例
{ "operation":{ "name":"DELETE RESOURCE" "result":{"status":"Success" "message":"Resources deleted successfully."} } }
9.获取密码请求列表
描述
获取管理员登录批准,拒绝的密码请求列表。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/accounts/passwordaccessrequests?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
GET
输入数据:
无
请求示例
输出示例
{ "operation":{ "name":"GET_PASSWORDREQUEST" "result":{ "status" : "Success" "message" : "Password Request fetched successfully" } "Details":{ "REQUESTER USERID" : "2" "REQUESTED BY" : "guest" "REQUESTED BY FULLNAME" : "Guest guest" "PASSWORDREQUESTLIST" : [ { "ACCOUNT ID" : "1" "ACCOUNT NAME" : "ACCOUNT1" "RESOURCE ID":"1" "RESOURCE NAME":"apt-server1" "PASSWD ID" : "1" "STATUS":"" "REQUESTED TIME":"Nov 27 "REASON" : "For connecting the machine and update the pmp server". } { "ACCOUNT ID" : "2" "ACCOUNT NAME" : "ACCOUNT2" "RESOURCE ID":"2" "RESOURCE NAME":"apt-server2" "PASSWD ID" : "2" "STATUS":"" "REQUESTED TIME":"Nov 28 "REASON" : "For connecting the machine and update the pmp server". } ] } } }
10.提交密码请求
描述
请求管理员批准密码访问。要提供其账户ID。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/accounts/<账户ID>/requestpassword?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
POST
输入数据:
如果设置了提交请求要提交原因,按照下面的说明提供。如果启用了工单系统,你需要提供工单ID。
输入示例:
INPUT_DATA= { "operation" : { "Details" : { "REASON" : "Testing", "TICKETID" : "7"}}}
请求示例
输出示例
{ "operation":{ "name":"REQUEST_PASSWORD" , "result":{ "status": "Success" , "message":"Request to view password have been raised successfully" }, "Details":{ "STATUS" : "WAITING FOR APPROVAL / CHECKOUT" ; } } }
11.拒绝密码请求
描述
用于管理员拒绝密码请求。这需要账户ID和请求者ID。
URL
HTTP方法:
POST
输入数据:
无
说明:请求者ID就是提交密码访问请求的用户。REQUESTEDID可以从GET PASSWORDREQUEST API(REQUESTER USERID)获取。
请求示例
输出示例
{ "operation":{ "name" : "ADMIN_REQUEST_REJECT" "result" : { "status" : "Success" "message" : "Password Rejected successfully" } } }
12.批准密码请求
描述
用于管理员批准密码访问请求。需要提供账户ID和资源ID。
URL
HTTP方法:
POST
输入数据:
无
说明:请求者ID就是提交密码访问请求的用户。REQUESTEDID可以从GET PASSWORDREQUEST API(REQUESTER USERID)获取。
请求示例
输出示例
{ "operation" : { "name" : "ADMIN_REQUEST_APPROVE" "result" : { "status" : "Success" "message" : "Password Approved successfully" } } }
13.签入批准的密码
描述
用于签入管理员批准的密码。需要提供账户ID和请求者ID。
URL
https://<PMP的主机名或IP地址>:7272/restapi/json/v1/accounts/<账户ID>/requester/<请求者ID>/checkin?AUTHTOKEN=(上面步骤中生成的API认证令牌)
HTTP方法:
POST
输入数据:
无
说明:请求者ID就是提交密码访问请求的用户。REQUESTEDID可以从GET PASSWORDREQUEST API(REQUESTER USERID)获取。
请求示例
输出示例
{ "operation" : { "name" : "ADMIN_REQUEST_CHECKIN" "result" : { "status" : "Success" "message" : "Password have been checked in successfully" } } }
14.签出批准的密码
描述
用于签出管理员批准的密码。需要账户ID。
URL
HTTP方法:
POST
输入数据:
如果设置签出密码需要原因,输入数据如下所示。
输入示例:
{ "operation" : { "Details": { "REASON":"N/A" } } }
请求示例
输出示例
{ "operation" : { "name" : "REQUEST_CHECKOUT" "result" : { "status" : "Success" "message" : "Password have been checked out successfully" } "Details": { "STATUS" : "***** [checkIn]" } } }
15.创建用户
描述
用于添加新用户
URL
https://severname:port/restapi/json/v1/user?AUTHTOKEN=<token>&INPUT_DATA=<json>
HTTP方法:
POST
输入数据: (可选输入显示为灰色)
{
"operation": {
"Details": {
"USERNAME": "jason",
"FIRSTNAME": "Jason",
"LASTNAME": "Thomas",
"EMAIL": "jason@opmanager.com",
"PASSWORD":"Pa55w0Rd123",
"POLICY": "Strong",
"ROLE": "Administrator|Password Administrator|Password Auditor|Password User",
"ISSUPERADMIN": "true|false",
"DEPARTMENT": "NOC",
"LOCATION": "Level 10 - South Wing",
"ENABLEMOBILEACCESS": "true|false",
"ENABLEADDONACCESS": "true|false",
"LANDLINE_COUNTRYCODE": "+1",
"LANDLINE": "925-965-9647",
"LANDLINE_EXT": "4675",
"MOBILE_COUNTRYCODE": "+1",
"MOBILE": "925-965-9648",
"PHONEFACTOR_USERNAME": "jason1",
"RSAUSERNAME": "jason2",
"ENABLETWOFACTOR": "true|false",
"PRIMARYCONTACT": "landline|mobile"
}
}
}
输出实例
{ "operation":{"name":"CREATE_USER", "result":{"status":"Success", "message":"User Created Successfully" } } }
16.创建新API用户
描述
创建API用户的方法。
URL
https://severname:port/restapi/json/v1/user?AUTHTOKEN=<token>&INPUT_DATA=<json>
HTTP方法
POST
输入数据 (可选输入显示为灰色)
{
"operation": {
"Details": {
"USERNAME": "jason",
"FULLNAME": "Jason Thomas",
"EMAIL": "jason@opmanager.com",
"ISAPIUSER":"true",
"HOSTNAME":"jason-521.zoho.com",
"EXPIRYDATE":"yyyy-mm-dd|NeverExpires",
"POLICY": "Strong",
"ROLE": "Administrator|Password Administrator|Password Auditor|Password User",
"ISSUPERADMIN": "true|false",
"DEPARTMENT": "NOC",
"LOCATION": "Level 10 - South Wing",
}
}
}
输出实例
{ "operation":{ "name":"CREATE_USER", "result":{ "status":"Success", "message":"User Created Successfully" }, "Details":{ "AUTHTOKEN":"7D94BAAB-CA3B-44F5-8ED9-9317DAB5AEF0" } } }
17.获取许可密钥、文件、数字证书、文档、图片等
描述
用来获取文件、密钥、证书等资源。
URL
https://<Host-Name-of-PMP-Server OR IP address>:7272/restapi/json/v1/resources/<Resource ID>/accounts/<Account ID>/downloadfile
HTTP方法
GET
输入数据:
如果需要原因才能下载文件,安装下面格式指定。如果启用了工单系统,请传入工单ID。
{"operation":{ "Details":{ "REASON":"Need the key file to connect the remote host", //optional when reason is forced "TICKETID":"7", // optional when ticketing system is enabled "ISCUSTOMFIELD":"TRUE" //optional Need to be given if the file to be downloaded is account/resource additional field file type "CUSTOMFIELDTYPE":"ACCOUNT / RESOURCE" // optional -If its account additional field it must be ACCOUNT or if its resource additional field it must be RESOURCE "CUSTOMFIELDLABEL" : "LicenseFIle" // optional - Name of the resource/account additional field } } }
请求示例:
curl -i -k https://192.168.xx.xx:7272/restapi/json/v1/resources/1501/accounts/3601/downloadfile?AUTHTOKEN=DB44AEC4-5C9F-4547-859B-77B3D8EED417
18.为指定资源创建账户
描述
为指定资源ID创建多个账户。
输入数据:
你要传入账户列表。
INPUT_DATA={"operation":{ "Details":{ "ACCOUNTLIST": [ { "ACCOUNTNAME":"bestest047", "PASSWORD":"Pa$$Word@123", "NOTES":"IT Security - BES PMP API Test" }, { "ACCOUNTNAME":"bestest048", "PASSWORD":"Pa$$Word@123", "NOTES":"IT Security - BES PMP API Test" } ] } }
URL
https://<Host-Name-of-PMP-Server OR IP address>:7272/restapi/json/v1/resources/<Resource ID>/accounts
HTTP方法
POST
请求示例:
curl -X POST -k -H "Content-Type: text/json" 'https://192.168.xx.xx:7272/restapi/json/v1/resources/1/accounts? AUTHTOKEN=F73552FD-DDC2-415E-BF5D-06CFA519658B' -d INPUT_DATA= {"operation":{ "Details":{ "ACCOUNTLIST": [{ "ACCOUNTNAME": "bestest047","PASSWORD":"Pa$$Word@123", "NOTES":"IT Security - BES PMP API Test"},{"ACCOUNTNAME":"bestest048", "PASSWORD":"Pa$$Word@123","NOTES":"IT Security - BES PMP API Test"}]}}
输出实例
{"operation": {"name":"ADD ACCOUNTS","result": {"status":"Success","message":"Account added successfully"}, "Details":[ {"bestest047":{"STATUS":"Account added successfully"}, "bestest048":{"STATUS":"Account added successfully"}}]}}
19. 删除用户
描述
用来删除指定的用户。
URL
https://<Host-Name-of-PMP-Server OR IP address>:7272/restapi/json/v1/user/{userid}
HTTP方法
DELETE
请求示例
输出实例
{"operation":{"name":"DELETE USER","result":{"status":"Success","message":"User Michael deleted Successfully"} } }