摘要
这是一个交互式用例,演示了保护交互式命令所涉及的步骤,以便只有授权人员才能访问它。通常这些命令(无论是交互式还是批处理式)都是用于访问和/或修改底层数据库的命令。因此出于安全原因,显然我们需要根据用户、组织与人员背景、项目、角色或组织来控制对这些命令的访问。技术文章《ENOVIA VPLM 命令安全 》[1](#1) 对此主题进行了进一步探讨。
本用例由一个基于对话框的命令驱动,该命令是 3DEXPERIENCE 平台内常规工作台 的PLM 客户端适配器插件 的一部分。我们有关于插件 [2](#2) 和基于对话框 的命令 [3](#3) 的专门文章。
通过本用例你将学到什么
在本用例中,我们主要学习在 3DEXPERIENCE 平台中保护命令的方法,以便只有授权人员才能访问它。
CAAAdpSecuredBasicCommand用例
CAAAdpSecuredBasicCommand 是 CAAPLMClientAdapter.edu 框架中的一个用例,主要演示了 CATPLMIntegrationAccess 框架的功能。
CAAAdpSecuredBasicCommand的功能
CAAAdpSecuredBasicCommand 用例本质上是一个集成在 3DEXPERIENCE 平台中的命令,它会检查连接到指定存储库的最终用户是否具有访问特定功能的授权,以决定是否允许其访问。
此命令是"CAA PLM 掩码"工具栏的一部分,该工具栏是 3DEXPERIENCE 平台内常规工作台的一个 PLM 客户端适配器插件。
该工具栏列在"自定义"对话框的"分区"选项卡中,如图 1 所示。
图 1 自定义 --> 分区 --> CAA PLM 掩码

图 2 描绘了"CAA PLM 掩码"工具栏,其中包含"受保护命令",该命令显示为一个图标 。

激活受保护命令后,执行过程会根据 ENOVIA 管理员为输入存储库的当前会话用户定义的关键字"SAVE"来检查访问授权。可能出现以下两种情况之一:
-
如果用户获得授权,将出现一个标题为"安全参数"的新对话框,如[图 3]所示。它显示当前会话的连接参数。

-
如果用户未获授权,则会出现如下图[图 4]所示的"命令访问警告"对话框。

如何启动CAAAdpSecuredBasicCommand
要启动 CAAAdpSecuredBasicCommand,您需要设置构建时环境,然后编译 CAAAdpSecuredBasicCommand 及其先决条件,设置运行时环境,最后执行该用例 [4](#4)。
- 通过执行
mkrun启动 3DEXPERIENCE。 - 连接后,进入首选项 子菜单,点击自定义 ,检查是否存在CAA PLM 掩码 (见插件部分),如上文图 1 所示。用户可以在视图->工具栏选项中设置所创建工具栏的可见性。
- "CAAAdpSecuredBasicCommand 的功能"部分提供了后续步骤的更多详细信息。
插件访问
3DEXPERIENCE 平台内常规工作台的 PLM 客户端适配器 插件,是通过 CAAAdpGeneralWksAddin 组件的数据扩展实现的。这需要在 .dico 文件中包含以下条目。
...
#CAA#CAAAdpGeneralWksAddin CATIWorkbenchAddin libCAAAdpGeneralWksAddin
#CAA#CAAAdpGeneralWksAddin CATIAfrGeneralWksAddin libCAAAdpGeneralWksAddin
...
在启动 3DEXPERIENCE 之前,请取消注释上述行(移除粗体字符)在 CAAPLMClientAdapter.edu.dico 文件中。这些条目主要表明该插件本质上是一个 CATIWorkbenchAddin 和一个 CATIAfrGeneralWksAddin 实现,位于 CAAAdpGeneralWksAddin 共享库中。
在哪里可以找到CAAAdpSecuredBasicCommand代码
CAAAdpSecuredBasicCommand 用例由多个类组成,分布在位于CAAPLMClientAdapter.edu框架的CAAAdpCommands.m模块中的多个文件中:
InstallRootDirectory\CAAPLMClientAdapter.edu\CAAAdpCommands.m\
其中 InstallRootDirectory [4](#4) 是安装 CAA CD-ROM 的目录。
CAAAdpSecuredBasicCommand.cpp- 基本命令实现CAAAdpSecuredCommandDlg.cpp- 对话框实现
本用例还需要一个插件模块:
InstallRootDirectory\CAAPLMClientAdapter.edu\CAAAdpGeneralWksAddin.m\
其中包含 CAAAdpGeneralWksAdn.cpp 中的常规工作台插件实现。
分步指南
CAAAdpSecuredBasicCommand 用例中唯一最重要的步骤是:
序言
一个名为"受保护命令"的基本命令作为 PLM 客户端适配器插件的一部分,集成在 3DEXPERIENCE 的常规工作台中。
基本命令实现
基本命令实现仅包含在其构造函数中编写的代码,如下所示。从根本上讲,它会检查已连接的用户是否具有通过关键字"SAVE"声明的"访问授权"。如果存在授权,则构建一个显示连接参数的对话框。否则,它仅显示一个警告对话框,表明对该命令的访问未授权。
cpp
CAAAdpSecuredBasicCommand::CAAAdpSecuredBasicCommand() :
CATCommand (NULL, "CAAAdpSecuredBasicCommand")
{
CATString iKeyWordCommand("SAVE");
HRESULT hr = CATAdpPublicSecurityServices::CheckAccess("",iKeyWordCommand);
if (S_OK == hr)
{
_pDlg = new CAAAdpSecuredCommandDlg();
if (NULL != _pDlg)
{
_pDlg->Build();
_pDlg->SetVisibility(CATDlgShow);
}
} else
{
CATDlgNotify* piNotifyDlg = new CATDlgNotify((CATApplicationFrame::GetFrame())
->GetMainWindow(),"Unauthorized Access",CATDlgNfyOK);
CATUnicodeString Title("Command Access Warning");
CATUnicodeString Msg("Unauthorized Command Access");
if (NULL != piNotifyDlg)
piNotifyDlg->DisplayBlocked(Msg,Title);
}
RequestDelayedDestruction();
}
上述 CAAAdpSecuredBasicCommand 构造函数实现包括:
- 调用
CATAdpPublicSecurityServices::CheckAccess,其参数包括:"",一个空字符串。API 将自行检索提供者,因为我们当前处于连接到已知存储库的会话中。iKeyWordCommand,一个CATString类型,由您的管理员定义,包含用户的"访问授权"状态。
- 如果上述 API 返回
S_OK,则表示已授予授权。我们继续进行:- 在
_pDlg上调用CAAAdpSecuredCommandDlg::Build,该方法实际构建一个对话框。 - 在
_pDlg上调用CAAAdpSecuredCommandDlg::SetVisibility,参数为CATDlgShow,将对话框可见性设置为"显示"模式。
- 在
- 最后调用
RequestDelayedDestruction(),它确保基本命令在创建后立即终止。它完全自行管理其销毁过程。
对话框实现
这一步涉及创建一个对话框来显示当前会话的连接参数。
cpp
void CAAAdpSecuredCommandDlg::Build()
{
...
HRESULT hr = CATAdpPublicSecurityServices::GetSecurityParameters("",_oUserId,
_oOrganisationId,_oProjectId,_oRoleId);
...
CATUnicodeString strUserId(_oUserId);
_UserIDEditor->SetText(strUserId);
CATUnicodeString strOrganisationId(_oOrganisationId);
_OrganizationIDEditor->SetText(strOrganisationId);
CATUnicodeString strProjectId(_oProjectId);
_ProjectIDEditor->SetText(strProjectId);
CATUnicodeString strRoleId(_oRoleId);
_RoleIDEditor->SetText(strRoleId);
}
创建对话框的步骤在文章 [3](#3) 中有详细说明。接下来的调用是检索当前会话的登录信息。即:
CATAdpPublicSecurityServices::GetSecurityParameters,其参数包括:
"",一个空字符串。API 将自行检索提供者,因为我们当前处于连接到已知存储库的会话中。_oUserId,一个CATString类型,表示当前登录的用户。_oOrganisationId,一个CATString类型,当前组织标识符。_oProjectId,一个CATString类型,当前项目标识符。_oRoleId,一个CATString类型,当前角色标识符。
结语
基本命令在创建后立即终止。因此,它的作用仅是在其构造函数中创建"安全参数"或"命令访问警告"面板(视情况而定),然后立即调用其自身的析构函数。
概要
这是一个交互式用例,演示了在 3DEXPERIENCE 平台中保护交互式命令所涉及的步骤,以确保只有授权人员(基于用户、组织与人员背景、项目、角色)才能访问它。这些命令通常访问和/或修改底层数据库。
一个"受保护命令"命令被集成在 3DEXPERIENCE 平台"常规工作台"的一个工具栏中。技术文章《ENOVIA VPLM 命令安全》[1](#1) 对此主题进行了进一步探讨。
历史
版本: 1 [2008年8月] 文档创建