如果 Orchestrator 配置为通过 vSphere 身份验证模式使用 vCenter Single Sign-On 服务器,您需要主体密钥持有人令牌才可通过 Orchestrator REST API 访问 Orchestrator 中的系统对象。若要通过 Orchestrator 服务器访问使用 vCenter Single Sign-On 服务器的 vCenter Server 或第三方系统,您需要 Orchestrator 的委派密钥持有人令牌和您的主体令牌。

如果 Orchestrator 配置为使用 vCenter Single Sign-On 服务器,您必须使用有效的凭据进行身份验证,且将由 Orchestrator 管理密钥持有人令牌。

访问 Orchestrator 中的系统对象

您可以在清单的 URL 以及 REST API 的目录服务处访问 Orchestrator 中的系统对象。

  • https://orchestrator_host:port/vco/api/inventory/System/

  • https://orchestrator_host:port/vco/api/catalog/System/

访问 Orchestrator 中的系统对象时,您需要将发起的 HTTP 请求中 Authorization 标头内的主体密钥持有人令牌传递到清单或目录服务。

例如,若要检索类型 Workflow的所有系统对象,您需要在 https://orchestrator_host:port/vco/api/catalog/System/Workflow/ 发起GET 请求。若要对 Orchestrator 进行身份验证,您需要传递请求中 Authorization 标头内的主体密钥持有人令牌。

访问第三方系统中的对象

若要通过 Orchestrator REST API 在注册到 vCenter Single Sign-On 服务器的第三方系统中执行操作,您必须对 Orchestrator 和第三方系统进行身份验证。您需要在通过 Orchestrator REST API 发起的 HTTP 调用中包含两个标头。

  • Authorization。您必须传递此标头中的主体密钥持有人令牌。

  • VCOAuthorization。您必须传递此标头中的 Orchestrator 的委派密钥持有人令牌。您必须从 vCenter Single Sign-On 服务器获取 Orchestrator 的委派令牌。Orchestrator 使用委派令牌代表您对第三方系统进行身份验证。

例如,若要通过 Orchestrator REST API 运行使用虚拟机的工作流,您要访问同时位于 Orchestrator 和vCenter Server中的资源。若要对 Orchestrator 和 vCenter Server进行身份验证,您必须传递所发起请求中的 Authorization 标头内的主体密钥持有人令牌,以及VCOAuthorization 标头内的委派令牌。这样,您可以使用主体令牌对 Orchestrator 进行身份验证,而 Orchestrator 使用委派令牌代表您对 vCenter Server 进行身份验证。

vCenter Single Sign-On 服务器将 Orchestrator 视为解决方案,并且会使用唯一用户名向 vCenter Single Sign-On 服务器注册每个解决方案。通过将 Orchestrator 的解决方案用户名和主体密钥持有人令牌传递到 vCenter Single Sign-On 服务器,请求 Orchestrator 的委派令牌。vCenter Single Sign-On 服务器颁发的令牌是供 Orchestrator 代表您对第三方系统进行身份验证时使用的委派密钥持有人令牌。

以 vCenter Single Sign-On 模式获取会话

以下示例代码以 vCenter Single Sign-On 模式获取会话。

URI uri = URI.create("https://orchestrator-server:8281/vco/api");
VcoSessionFactory sessionFactory = new DefaultVcoSessionFactory(uri);

//provide the address of the vCenter Single Sign-On server
URI ssoUri = URI.create("https://sso-server:7444/ims/STSService?wsdl");

//set the tokens to be valid for an hour
long lifeTimeSeconds = 60 * 60;

//create a factory for vCenter Single Sign-On tokens
SsoAuthenticator sso = new SsoAuthenticator(URI ssoUri, URI adminUri, VcoSessionFactory vcoSessionFactory, long lifeTimeSeconds);

//provide vCenter Single Sign-On credentials
SsoAuthentication authentication = sso.createSsoAuthentication("username", "password");

VcoSession session = sessionFactory.newSession(authentication);
//use session here