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

Create project using Fortify Software Security Center 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 请求库这样做特别感兴趣。我 NOT 不想在 Java 中做任何事情(这是 Fortify SSC WAR 包附带的所有示例)。

如果有人对 SSC REST 有任何经验API(或者可以指出一些更好的文档),我将不胜感激。

我终于从 HPE 技术支持那里得到了一些有用的信息,并且能够使用 Python 中的 SSC REST API 创建项目的脚本放在一起。最新版本的 SSC (17.10) 通过 Swaggerized REST API.

使这变得更加容易

我写了一个开放的source python library,这里有用。 这个简单易用,还提供命令行工具上传源码进行静态扫码。

感谢 SonarQube Fortify plugin 的作者(不是 Fortify SSC 文档,也不是它自动生成的 ssc/html/docs/api-reference),我认为我需要对令牌进行 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 调用有助于避免重新发送用户 name/password 对。 Fortify SCA bin 目录中的 fortifyclient 脚本可以预先执行调用。