如果启用了单点登录,请使用 API ( PingFederate )
-
本文档站点的 PDF

单独 PDF 文档的收集
Creating your file...
如果您有 "已配置并启用单点登录( SSO )" 如果使用 PingFederate 作为 SSO 提供程序,则必须对一系列 API 请求进行问题描述 处理,以获取对网格管理 API 或租户管理 API 有效的身份验证令牌。
如果启用了单点登录,请登录到 API
如果您使用 PingFederate 作为 SSO 身份提供程序,则以下说明适用
-
您知道属于 StorageGRID 用户组的联合用户的 SSO 用户名和密码。
-
如果要访问租户管理 API ,您知道租户帐户 ID 。
要获取身份验证令牌,可以使用以下示例之一:
-
。
storagegrid-ssoauth.py
Python脚本、位于StorageGRID 安装文件目录中 (./rpms
对于Red Hat Enterprise Linux、./debs
适用于Ubuntu或Debian、和./vsphere
适用于VMware)。 -
cURL 请求的示例工作流。
如果执行速度过慢,则卷曲工作流可能会超时。您可能会看到以下错误:
A valid SubjectConfirmation was not found on this Response
。示例 cURL 工作流不会保护密码不会被其他用户看到。 如果您使用的是URL编码问题描述 、则可能会看到以下错误:
Unsupported SAML version
。
-
选择以下方法之一以获取身份验证令牌:
-
使用
storagegrid-ssoauth.py
Python脚本。转至步骤 2 。 -
使用 curl 请求。转至步骤 3 。
-
-
如果要使用
storagegrid-ssoauth.py
脚本、将脚本传递给Python解释器并运行脚本。出现提示时,输入以下参数的值:
-
SSO 方法。您可以输入"pingfederate"的任何变体(Pingfederate、pingfedate等)。
-
SSO 用户名
-
安装 StorageGRID 的域。此字段不用于 PingFederate 。您可以将其留空或输入任何值。
-
StorageGRID 的地址
-
要访问租户管理 API 的租户帐户 ID 。
输出中提供了 StorageGRID 授权令牌。现在,您可以将令牌用于其他请求,类似于在未使用 SSO 时使用 API 的方式。
-
-
如果要使用 curl 请求,请使用以下操作步骤 。
-
声明登录所需的变量。
export SAMLUSER='my-sso-username' export SAMLPASSWORD='my-password' export TENANTACCOUNTID='12345' export STORAGEGRID_ADDRESS='storagegrid.example.com'
Bash要访问网格管理API、请使用0作为 TENANTACCOUNTID
。 -
要接收签名身份验证URL、问题描述 请将POST请求发送到
/api/v3/authorize-saml
、并从响应中删除其他JSON编码。此示例显示了一个 POST 请求,用于为 TENANTACCOBTID 提供签名身份验证 URL 。结果将传递到 python -m json.tool 以删除 JSON 编码。
curl -X POST "https://$STORAGEGRID_ADDRESS/api/v3/authorize-saml" \ -H "accept: application/json" -H "Content-Type: application/json" \ --data "{\"accountId\": \"$TENANTACCOUNTID\"}" | python -m json.tool
Bash此示例的响应包括一个 URL 编码的签名 URL ,但不包括额外的 JSON 编码层。
{ "apiVersion": "3.0", "data": "https://my-pf-baseurl/idp/SSO.saml2?...", "responseTime": "2018-11-06T16:30:23.355Z", "status": "success" }
-
保存
SAMLRequest
从响应中获取、以便在后续命令中使用。export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
-
导出响应和 cookie ,并对响应执行回显:
RESPONSE=$(curl -c - "$SAMLREQUEST")
Bashecho "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"'
Bash -
导出 "pf.adapterId" 值,并对响应执行回显:
export ADAPTER='myAdapter'
echo "$RESPONSE" | grep 'base'
Bash -
导出 "href" 值(删除后斜杠 / ),并对响应执行回显:
export BASEURL='https://my-pf-baseurl'
echo "$RESPONSE" | grep 'form method="POST"'
Bash -
导出 "act" 值:
export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
-
发送 Cookie 以及凭据:
curl -b <(echo "$RESPONSE") -X POST "$BASEURL$SSOPING" \ --data "pf.username=$SAMLUSER&pf.pass=$SAMLPASSWORD&pf.ok=clicked&pf.cancel=&pf.adapterId=$ADAPTER" --include
Bash -
保存
SAMLResponse
在隐藏字段中:export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
Bash -
使用已保存的
SAMLResponse
、创建StorageGRID/api/saml-response
生成StorageGRID 身份验证令牌的请求。适用于
RelayState
、请使用租户帐户ID或如果要登录到网格管理API、请使用0。curl -X POST "https://$STORAGEGRID_ADDRESS:443/api/saml-response" \ -H "accept: application/json" \ --data-urlencode "SAMLResponse=$SAMLResponse" \ --data-urlencode "RelayState=$TENANTACCOUNTID" \ | python -m json.tool
Bash响应包括身份验证令牌。
{ "apiVersion": "3.0", "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7", "responseTime": "2018-11-07T21:32:53.486Z", "status": "success" }
-
将响应中的身份验证令牌另存为
MYTOKEN
。export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"
Bash您现在可以使用
MYTOKEN
对于其他请求、类似于未使用SSO时使用API的方式。
-
如果启用了单点登录,请注销 API
如果已启用单点登录( Single Sign-On , SSO ),则必须对一系列 API 请求进行问题描述 ,才能注销网格管理 API 或租户管理 API 。 如果您使用 PingFederate 作为 SSO 身份提供程序,则以下说明适用
如果需要、您可以从组织的单点注销页面注销、以注销StorageGRID API。或者,您也可以从 StorageGRID 触发单点注销( SLO ),这需要有效的 StorageGRID 令牌。
-
要生成签名注销请求、请将`cookie "sso=true "传递到SLO API:
curl -k -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --cookie "sso=true" \ | python -m json.tool
Bash返回注销 URL :
{ "apiVersion": "3.0", "data": "https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D", "responseTime": "2021-10-12T22:20:30.839Z", "status": "success" }
-
保存注销 URL 。
export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
Bash -
向注销 URL 发送请求以触发 SLO 并重定向回 StorageGRID 。
curl --include "$LOGOUT_REQUEST"
Bash返回 302 响应。此重定向位置不适用于纯 API 注销。
HTTP/1.1 302 Found Location: https://$STORAGEGRID_ADDRESS:443/api/saml-logout?SAMLResponse=fVLLasMwEPwVo7ss%...%23rsa-sha256 Set-Cookie: PF=QoKs...SgCC; Path=/; Secure; HttpOnly; SameSite=None
-
删除 StorageGRID 承载令牌。
删除 StorageGRID 承载令牌的工作方式与不使用 SSO 相同。如果未提供`cookie "sso=true "、则用户将从StorageGRID中注销、而不会影响SSO状态。
curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --include
Bash答
204 No Content
响应指示用户现在已注销。HTTP/1.1 204 No Content