使用Fortify软件安全中心REST API创建项目



我可以使用HP Fortify SSC的REST API创建项目吗?这可以很好地获取项目列表:

import requests
import getpass
import json
url = "https://www.example.com/ssc/api/v1/"
endpoint = "auth/obtain_token"
headers = {"Content-Type": "application/json",
           "Accept": "application/json"}
username = getpass.getuser()
password = getpass.getpass()
auth = (username, password)
r = requests.post("{url}{endpoint}".format(url=url, endpoint=endpoint), headers=headers, auth=auth)
data = r.json().get("data")
token = data.get("token")
endpoint = "projects"
headers["Authentication"] = "FortifyToken {token}".format(token=token)
r = requests.get("{url}{endpoint}".format(url=url, endpoint=endpoint), headers=headers)
print json.dumps(r.json(), sort_keys=True, indent=4, separators=(',', ': '))

但我在API文档中没有看到任何实际创建项目的示例。我特别感兴趣的是使用Python请求库。我确实不想用Java做任何事情(这就是Fortify SSC WAR包附带的所有示例)。

如果有人对SSC REST API有任何经验(或者可以向我介绍一些更好的文档),我将感谢你能提供的任何帮助。

我终于从HPE技术支持中获得了一些好的信息,并能够使用Python中的SSC REST API编写创建项目的脚本。最新版本的SSC(17.10)通过夸张的REST API使这一点变得更加容易。

我已经编写了一个开源python库,它可以在这里使用。这很容易使用,它还提供了一个命令行工具来上传静态代码扫描的源代码。

感谢SonarQube Fortify插件的作者(不是Fortify SSC文档,也不是其自动生成的SSC/html/docs/api参考),我认为我需要对令牌进行base64编码。

if len(auth) == 1:
    headers.update((("Authorization", "FortifyToken " + base64.b64encode(auth[0])),))
elif len(auth) == 2:
    headers.update((("Authorization", "Basic " + base64.b64encode("{}:{}".format(*auth))),))

auth/token调用有助于避免重新发送用户名/密码对。Fortify SCA bin目录中的强化客户端脚本可以预先执行调用。

最新更新