基于角色的访问
注意
独立的 MATLAB® Web App Server™ 产品支持基于角色的访问,而 MATLAB Compiler™ 中包含的开发版本则不支持。有关详细信息,请参阅MATLAB Web App Server 差异。
前提条件
在服务器上启用 SSL。有关详细信息,请参阅在 MATLAB Web App Server 上启用 SSL。
在服务器上启用身份验证。有关详细信息,请参阅身份验证。
创建 webapps_app_roles.json 文件
在服务器上启用基于角色的访问可以让您决定哪些用户可以创建 App,哪些用户可以使用它们。
MATLAB Web App Server 支持两个角色使用基于角色的访问:作者和用户。
作者可以从 MATLAB Web App Server 添加、删除和运行 Web App。作者在服务器主页上会看见管理 Apps 按钮。
用户只能从 MATLAB Web App Server 主页运行 Web App。用户在服务器主页上会看见诊断按钮。
您可以结合使用基于角色的访问和基于策略的访问,以精细地确定谁可以在服务器上运行 App 以及谁可以修改它们。有关详细信息,请参阅基于策略的访问。
要启动基于角色的访问,请执行以下操作:
检查 SSL 是否启用。有关详细信息,请参阅在 MATLAB Web App Server 上启用 SSL。
检查身份验证是否已启用。有关详细信息,请参阅身份验证。
创建一个名为
webapps_app_roles.json的文件并将其放在webapps_private文件夹中。webapps_private文件夹位于以下位置:操作系统 文件夹位置 Windows®
%ProgramData%\MathWorks\webapps\R2025b\config\webapps_privateLinux®
/local/MathWorks/webapps/R2025b/config/webapps_privatemacOS
/Library/Application Support/MathWorks/webapps/R2025b/config/webapps_privatewebapps_app_roles.json的 JSON 架构是:{ "version": "1.0.0", "appRoles": [ { "id": "User", "description": <Text describing the User role>, "users": { <Attribute name and values to identify end-users assigned to User role> }, "groups": { <Attribute name and values to identify groups assigned to User role> } }, { "id": "Author", "description": <Text describing the Author role>, "users": { <Attribute name and values to identify end-users assigned to Author role> }, "groups": { <Attribute name and values to identify groups assigned to Author role> } } ] }version:指定 JSON 架构的版本。R2025b 的默认值是:
1.0.0。id:指定角色名称。您可以指定
User或Author。仅支持这两个角色。description:为每个角色指定一个描述。例如:
"description" : "An Author can upload, delete, and execute web apps."users:指定一个属性,以唯一地标识经过身份验证的最终用户集,这些用户可以承担作者或用户角色。
属性名称取决于您使用的身份验证类型。
例如,如果您使用 LDAP 进行身份验证,则可以按如下方式填写 JSON 架构:
在上面的架构中,一旦最终用户通过了身份验证,MATLAB Web App Server 就会检查经过身份验证的用户是否具有属性"users":{ "email": ["bishop@example.com", "queen@example.com"] }email,并检查属性值(在本例中为电子邮件地址)是否在架构中列出。当两项检查都成功时,系统将为最终用户分配一个角色。groups:指定一个属性名称和相应的值,以唯一地标识经过身份验证的最终用户组,这些用户可以承担作者或用户角色。
属性名称取决于您使用的身份验证类型。使用组可让您一次性为整个最终用户集分配角色。
例如,如果您使用 LDAP 进行身份验证,则可以按如下方式填写 JSON 架构:
在上面的架构中,一旦最终用户通过了身份验证,MATLAB Web App Server 就会检查经过身份验证的用户是否具有属性"groups": { "memberOf": [ "CN=Marketing,OU=Mail,DC=ldap,DC=example,DC=com", "CN=Development,OU=Mail,DC=ldap,DC=example,DC=com"] }memberOf,并检查该属性的值是否在架构中列出。当两项检查都成功时,系统将为最终用户分配一个角色。架构中指定的属性需要是集体属性或组属性。
提示
您不需要在每个角色的架构中同时指定
users和groups,除非这是获取一组唯一的最终用户的唯一方法。如果您使用用户角色中的
users字段中的属性来标识一组用户,则您需要使用作者角色中users字段中的相同属性来标识一组用户。同样的条件也适用于groups。
MATLAB Web App Server 首先检查经过身份验证的用户是否可以担任作者的角色,然后再检查用户角色。如果对两个角色的检查都失败,则最终用户将被拒绝访问服务器。
用于 LDAP 身份验证的 webapps_app_roles.json 示例文件
{
"version": "1.0.0",
"appRoles": [
{
"id": "User",
"description": "A User can only execute web apps.",
"groups": {
"memberOf": [
"CN=Marketing,OU=Mail,DC=ldap,DC=example,DC=com",
"CN=Development,OU=Mail,DC=ldap,DC=example,DC=com"
]
}
},
{
"id": "Author",
"description": "An Author can upload, delete, and execute web apps.",
"users": { "email": [
"bishop@example.com",
"queen@example.com"
]
}
}
]
}用于 Azure AD 身份验证的 webapps_app_roles.json 示例文件
{
"version": "1.0.0",
"appRoles": [
{
"id": "User",
"description": "A User can only execute web apps.",
"groups": {
"groups": [
"1a23456-ab2c-4444-a123-12345b3a81af",
"2b3456cd-e8ed-4fcf-ac55-6b79b0781eed "
]
}
},
{
"id": "Author",
"description": "An Author can upload, delete, and execute web apps.",
"users": { "email": [
"bishop@example.com",
"queen@example.com"
]
}
}
]
}小心
请严格执行 webapps_app_roles.json 的 JSON 架构语法。架构语法中的错误可能导致服务器无法启动,或者您在尝试登录时访问服务器遭拒。