我正在使用 vim25 库与 vCenter 建立连接,并且可以使用以下代码登录,
vimport.login(serviceContent.getSessionManager(), username, password, null);
现在,我想检查这个用户是否具有管理员权限,我们如何借助 vSphere 客户端 SDK 在 Java 中实现?
vSphere 权限模型有两个方面:
vCenter 特权,它们组合成角色,然后分配给用户或组作为对 vCenter 清单特定部分的权限。通常,每个 vCenter 操作都会根据用户对对象的操作的实际权限进行验证。所以原则上你想要的是检查是否有特定的权限而不是他是否是管理员。第二个更多是来自具有全套权限的内置管理员角色的次要概念,但可能没有在库存的某些部分完全授予用户。我的建议是弄清楚您关心的实际权限是什么以及您需要检查库存的哪些部分。有某些 API(全局单例托管对象上的 API,例如TaskManager)可以简单地检查在rootFolder级别授予的内容。
SSO 组- 一些服务检查 SSO 令牌是否包含有关特定组成员的声明。这通常由与身份验证相关的服务完成,这些服务不能搭载 vCenter 权限。鉴于您的示例,我假设您没有获得 SSO 令牌并且不关心此模型。
vSphere Client SDK 用于构建 UI 插件,因此我假设您希望根据用户权限过滤掉插件扩展。这是通过清单<privilege>
中扩展定义上使用的元数据标记完成的。plugin.xml
带有解释和示例的 SDK 文档:Filtering Extensions,“Filtering Based on User Privilege Level”部分。