主要内容

本页采用了机器翻译。点击此处可查看英文原文。

基于角色的访问

注意

独立的 MATLAB® Web App Server™ 产品支持基于角色的访问,而 MATLAB Compiler™ 中包含的开发版本则不支持。有关详细信息,请参阅MATLAB Web App Server 差异

前提条件

创建 webapps_app_roles.json 文件

在服务器上启用基于角色的访问可以让您决定哪些用户可以创建 App,哪些用户可以使用它们。

MATLAB Web App Server 支持两个角色使用基于角色的访问:作者用户

  • 作者可以从 MATLAB Web App Server 添加、删除和运行 Web App。作者在服务器主页上会看见管理 Apps 按钮。

  • 用户只能从 MATLAB Web App Server 主页运行 Web App。用户在服务器主页上会看见诊断按钮。

您可以结合使用基于角色的访问和基于策略的访问,以精细地确定谁可以在服务器上运行 App 以及谁可以修改它们。有关详细信息,请参阅基于策略的访问

要启动基于角色的访问,请执行以下操作:

  1. 检查 SSL 是否启用。有关详细信息,请参阅在 MATLAB Web App Server 上启用 SSL

  2. 检查身份验证是否已启用。有关详细信息,请参阅身份验证

  3. 创建一个名为 webapps_app_roles.json 的文件并将其放在 webapps_private 文件夹中。

    webapps_private 文件夹位于以下位置:

    操作系统文件夹位置

    Windows®

    %ProgramData%\MathWorks\webapps\R2025b\config\webapps_private

    Linux®

    /local/MathWorks/webapps/R2025b/config/webapps_private

    macOS

    /Library/Application Support/MathWorks/webapps/R2025b/config/webapps_private

    webapps_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:指定角色名称。您可以指定 UserAuthor。仅支持这两个角色。

    • description:为每个角色指定一个描述。例如:

      "description" : "An Author can upload, delete, and execute web apps."

    • users:指定一个属性,以唯一地标识经过身份验证的最终用户集,这些用户可以承担作者用户角色。

      属性名称取决于您使用的身份验证类型。

      例如,如果您使用 LDAP 进行身份验证,则可以按如下方式填写 JSON 架构:

      "users":{ "email": ["bishop@example.com", "queen@example.com"] }
      
      在上面的架构中,一旦最终用户通过了身份验证,MATLAB Web App Server 就会检查经过身份验证的用户是否具有属性 email,并检查属性值(在本例中为电子邮件地址)是否在架构中列出。当两项检查都成功时,系统将为最终用户分配一个角色。

    • groups:指定一个属性名称和相应的值,以唯一地标识经过身份验证的最终用户组,这些用户可以承担作者用户角色。

      属性名称取决于您使用的身份验证类型。使用可让您一次性为整个最终用户集分配角色。

      例如,如果您使用 LDAP 进行身份验证,则可以按如下方式填写 JSON 架构:

      "groups": { "memberOf": [ "CN=Marketing,OU=Mail,DC=ldap,DC=example,DC=com",
                                       "CN=Development,OU=Mail,DC=ldap,DC=example,DC=com"] }
      在上面的架构中,一旦最终用户通过了身份验证,MATLAB Web App Server 就会检查经过身份验证的用户是否具有属性 memberOf,并检查该属性的值是否在架构中列出。当两项检查都成功时,系统将为最终用户分配一个角色。

      架构中指定的属性需要是集体属性或组属性。

提示

  1. 您不需要在每个角色的架构中同时指定 usersgroups,除非这是获取一组唯一的最终用户的唯一方法。

  2. 如果您使用用户角色中的 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 架构语法。架构语法中的错误可能导致服务器无法启动,或者您在尝试登录时访问服务器遭拒。

另请参阅

主题