Moqui授权

Moqui Authorization

我正在尝试使用 REST API 访问 Moqui 实体。这是一个示例调用。

GET http://localhost:8080/rest/m1/products/default
Accept: application/application/json
Authorization: Basic am9obi5kb2U6bW9xdWk=

我收到以下回复

{
  "errorCode": 403,
  "errors": "User john.doe is not authorized for View on Entity mantle.product.Product"
}

然而,调用 mantle-usl 服务工作正常,如下例所示

GET http://localhost:8080/rest/s1/mantle/facilities/
Accept: application/application/json
Authorization: Basic am9obi5kb2U6bW9xdWk=

[
  {
    "facilityId": "ZIRET_WH",
    "pseudoId": "ZIRET_WH",
    "facilityTypeEnumId": "FcTpWarehouse",
    "ownerPartyId": "ORG_ZIZI_RETAIL",
    "facilityName": "Ziziwork Retail Warehouse",
    "assetAllowIssueOverQoh": "Y",
    "lastUpdatedStamp": 1550661258932
  }
]

如何允许用户使用 REST API 访问实体?

结帐https://www.moqui.org/m/docs/framework/Security#artifact-authz

以下文本是从 Moqui 文档中复制的。

配置工件授权的第一步是创建一组工件。这涉及组中每个工件或工件名称模式的 ArtifactGroup 记录和 ArtifactGroupMember 记录。

例如,这里是示例应用程序的工件组,根屏幕 (ExampleApp.xml) 作为组的成员:

<moqui.security.ArtifactGroup artifactGroupId="EXAMPLE_APP" description="Example App (via root screen)"/>
<moqui.security.ArtifactGroupMember artifactGroupId="EXAMPLE_APP" artifactTypeEnumId="AT_XML_SCREEN" inheritAuthz="Y" artifactName="component://example/screen/ExampleApp.xml"/>

如果你赶时间,请继续阅读。

尝试在 ExampleZzzDemoData.xml

中添加以下片段
<moqui.security.ArtifactGroupMember artifactGroupId="EXAMPLE_APP" artifactName="mantle\..*"
                                        nameIsPattern="Y" artifactTypeEnumId="AT_ENTITY" inheritAuthz="Y"/>

注意:这不适用于生产系统。将所有实体的访问权限授予单个角色是一个巨大的安全风险。确保您花时间并计划授权。