Personal-Data-Linkage-Module / pxr-linkage

4 stars 1 forks source link

蓄積定義が複数存在するアプリケーションの蓄積でエラーが発生する #82

Closed jou-imaizumi closed 7 months ago

jou-imaizumi commented 8 months ago

現在、某顧客向けの開発を行っております。 顧客要件により、蓄積データ(イベント/モノ)ごとに蓄積の同意を行う必要があり、アプリケーションカタログに対して複数の蓄積データごとに蓄積定義を作成し実装しています。(1アプリケーションカタログに対し蓄積定義が複数存在)

この状態で蓄積を実行したところ、一つ目の蓄積定義に対するイベント蓄積は成功しましたが、二つ目以降の定義に関連するイベントの蓄積ができませんでした。(401応答) セミナー資料では1アプリケーションカタログに対し蓄積定義が1つであることは認識しておりますが、今回のように複数の蓄積定義ができること、蓄積定義ごとの同意ができること、さらに蓄積同意状況の確認(セミナー資料のS23-1-10)においても複数の蓄積定義が返却されており、このような構成でも問題なく蓄積ができる認識です。 以下に情報を記載するので、内容の確認をお願いします。

イベント蓄積の結果

リクエスト内容

curl -v -k \
-X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'x-xsrf-token:ECi2W1wb-pAWybCZgZDVxFGLvjYACRS-A1Gk' \
-b 'operator_type2_session=50af5252caf42df644cd6082321969cc326d02ea719fe52cf91b4487acea6c2a;_csrf=2_OPqhTG4WXO4SaUQnHA8iDi' \
-d '{
    "_code": {
        "_value": 1000807,
        "_ver": 1
    },
    "app": {
        "code": {
            "index": "2_3_1",
            "value": {
                "_value": 1000802,
                "_ver": 2
            }
        },
        "app": {
            "index": "2_3_2",
            "value": {
                "_value": 1000810,
                "_ver": 3
            }
        }
    },
    "code": {
        "index": "3_1_2",
        "value": {
            "_value": 1000807,
            "_ver": 1
        }
    },
    "end": {
        "index": "3_2_2",
        "value": "2023-10-30T12:00:00.000+0900"
    },
    "env": null,
    "id": {
        "index": "3_1_1",
        "value": null
    },
    "location": {
        "index": "3_3_1",
        "value": null
    },
    "sourceId": null,
    "start": {
        "index": "3_2_1",
        "value": "2023-10-30T12:59:59.000+0900"
    },
    "thing": null,
    "userId": {
        "index": "3_6_1",
        "value": "user__001_app1"
    }
}' \
https://[App-BlockのFQDN]/pxr-block-proxy/pxr-block-proxy/?path=%2Fbook-operate%2Fevent%2Fuser__001_app1

レスポンス

{"status":401,"message":"このリクエストは許可されませんでした"}

蓄積同意状況の確認

リクエスト

curl -v -k \
-X GET \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'x-xsrf-token:76FtVAm3-Vj7U-4JU7XZK8nrL4Oyw60waw6M' \
-b 'operator_type0_session=fd7b788f9956f5fc5edda341d0ead205053dd413166b23ea1203a3a16d2f6ce9;_csrf=ZQi6RowpTwjdZjI00jOXgZjP' \
'https://[PxR-Root-BlockのFQDN]/pxr-block-proxy/pxr-block-proxy/ind/?block=$pxr-root-block&path=%2Fbook-manage%2Fsettings%2Fstore%2Fuser__001_app1%3Fapp%3D1000810'

レスポンス

[
    {
        "id": 9,
        "actor": {
            "_value": 1000802,
            "_ver": 2
        },
        "app": {
            "_value": 1000810,
            "_ver": 3
        },
        "wf": null,
        "store": {
            "_value": 1000808,
            "_ver": 1
        },
        "storeCatalogId": "bshfx4fh-cijj-hu8n-gxv1-ebfx5eteolx3",
        "document": [],
        "event": [
            {
                "_code": {
                    "_value": 1000806,
                    "_ver": 1
                },
                "thing": [
                    {
                        "_code": {
                            "_value": 1000804,
                            "_ver": 1
                        }
                    }
                ]
            }
        ],
        "thing": null
    },
    {
        "id": 10,
        "actor": {
            "_value": 1000802,
            "_ver": 2
        },
        "app": {
            "_value": 1000810,
            "_ver": 3
        },
        "wf": null,
        "store": {
            "_value": 1000809,
            "_ver": 1
        },
        "storeCatalogId": "zedzrkgt-plda-g78k-nibe-vv7tmd5jbho2",
        "document": [],
        "event": [
            {
                "_code": {
                    "_value": 1000807,
                    "_ver": 1
                },
                "thing": [
                    {
                        "_code": {
                            "_value": 1000805,
                            "_ver": 1
                        }
                    }
                ]
            }
        ],
        "thing": null
    }
]

アプリケーションのカタログ取得の結果

リクエスト

curl -v -k \
-X GET \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'x-xsrf-token:76FtVAm3-Vj7U-4JU7XZK8nrL4Oyw60waw6M' \
-b 'operator_type0_session=fd7b788f9956f5fc5edda341d0ead205053dd413166b23ea1203a3a16d2f6ce9;_csrf=ZQi6RowpTwjdZjI00jOXgZjP' \
'https://[PxR-Root-BlockのFQDN]/pxr-block-proxy/pxr-block-proxy/ind/?block=$pxr-root-block&path=%2Fcatalog%2F1000810'

レスポンス

{
    "catalogItem": {
        "ns": "catalog/ext/ext_name/actor/app/actor_1000802/application",
        "name": "app1",
        "_code": {
            "_value": 1000810,
            "_ver": 3
        },
        "inherit": {
            "_value": 41,
            "_ver": 1
        },
        "description": {
            "title": null,
            "section": [
                {
                    "title": "app1",
                    "content": [
                        {
                            "sentence": "アプリ1です。"
                        }
                    ]
                }
            ]
        }
    },
    "template": {
        "_code": {
            "_value": 1000810,
            "_ver": 3
        },
        "information-site": null,
        "redirect_url": null,
        "region-alliance": [
            {
                "_value": 1000790,
                "_ver": 1
            }
        ],
        "share": [
            {
                "_value": 1000830,
                "_ver": 1
            },
            {
                "_value": 1000831,
                "_ver": 1
            },
            {
                "_value": 1000832,
                "_ver": 1
            },
            {
                "_value": 1000833,
                "_ver": 1
            },
            {
                "_value": 1000834,
                "_ver": 1
            },
            {
                "_value": 1000835,
                "_ver": 1
            },
            {
                "_value": 1000836,
                "_ver": 1
            },
            {
                "_value": 1000837,
                "_ver": 1
            }
        ],
        "store": [
            {
                "_value": 1000808,
                "_ver": 1
            },
            {
                "_value": 1000809,
                "_ver": 1
            }
        ]
    },
    "prop": [
        {
            "key": "information-site",
            "type": {
                "of": "string",
                "cmatrix": null,
                "format": null,
                "unit": null,
                "candidate": null
            },
            "description": "アプリケーションの情報サイト",
            "isInherit": true
        },
        {
            "key": "redirect_url",
            "type": {
                "of": "string",
                "cmatrix": null,
                "format": null,
                "unit": null,
                "candidate": null
            },
            "description": "リダイレクト先URL",
            "isInherit": true
        },
        {
            "key": "region-alliance",
            "type": {
                "of": "code[]",
                "cmatrix": null,
                "candidate": {
                    "ns": null,
                    "_code": null,
                    "base": {
                        "_value": 48,
                        "_ver": 1
                    }
                }
            },
            "description": "参加している領域運営サービスプロバイダーのリージョンコード配列",
            "isInherit": true
        },
        {
            "key": "share",
            "type": {
                "of": "code[]",
                "cmatrix": null,
                "candidate": {
                    "ns": null,
                    "_code": null,
                    "base": {
                        "_value": 40,
                        "_ver": 1
                    }
                }
            },
            "description": "アプリケーションが提供する状態共有機能の定義",
            "isInherit": true
        },
        {
            "key": "store",
            "type": {
                "of": "code[]",
                "cmatrix": null,
                "candidate": {
                    "ns": null,
                    "_code": null,
                    "base": {
                        "_value": 39,
                        "_ver": 1
                    }
                }
            },
            "description": "アプリケーションが蓄積可能なデータの定義",
            "isInherit": true
        }
    ],
    "value": [
        {
            "key": "information-site",
            "value": null
        },
        {
            "key": "redirect_url",
            "value": null
        },
        {
            "key": "region-alliance",
            "value": null
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000830
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000831
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000832
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000833
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000834
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000835
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000836
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "share",
            "value": [
                {
                    "key": "_value",
                    "value": 1000837
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "store",
            "value": [
                {
                    "key": "_value",
                    "value": 1000808
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "store",
            "value": [
                {
                    "key": "_value",
                    "value": 1000809
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        },
        {
            "key": "region-alliance",
            "value": [
                {
                    "key": "_value",
                    "value": 1000790
                },
                {
                    "key": "_ver",
                    "value": 1
                }
            ]
        }
    ],
    "attribute": null
}

各種ログ

access-control-manage-root.txt book-manage_root.txt pxr-block-proxy_app1.txt access-control-manage_app1.txt

jou-imaizumi commented 8 months ago

上記の蓄積同意状況の確認では2つの蓄積定義に同意しているレスポンスが返却されているように見えます。 しかし、利用者一覧取得APIをそのユーザを対象に実行してみた結果、同意している蓄積定義が一つしかないレスポンスが返却されました。

リクエスト

curl -v -k \
-X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'x-xsrf-token:VzpKbr2Z-dw84P-AJXnnOkwBXkFsbm40iKPA' \
-b 'operator_type2_session=86610f472f9ebd81db8189691eb31106eb1f8750de9c76ec58bf335ca3daffe1;_csrf=xir29alzQuqBd68lO9kILWQM' \
-d '{
  "userId": [
     "user__001_app1"
   ]
}' \
https://[app1のFQDN]/pxr-block-proxy/pxr-block-proxy/?path=%2Fbook-operate%2Fuser%2Flist

レスポンス

[
    {
        "status": 1,
        "app": {
            "_value": 1000810,
            "_ver": 3
        },
        "wf": null,
        "region": null,
        "userId": "user__001_app1",
        "establishAt": "2024-01-05T09:22:20.000+0900",
        "attribute": {},
        "store": {
            "document": [],
            "event": [
                {
                    "_value": 1000806,
                    "_ver": 1
                }
            ],
            "thing": [
                {
                    "_value": 1000804,
                    "_ver": 1
                }
            ]
        },
        "userInformation": null
    }
]
ToshinoriOchiai commented 7 months ago

本件、不具合になります。 蓄積APIにおいて、book-manageの蓄積定義取得API(内部API)を呼び出す処理がありますが、 本来は蓄積定義を全て取得しなければならないところを、最初の1つしか取得していないことが原因です。 そのため2つ目以降のデータ種の蓄積定義が取得できず、結果としてaccess-control-manageが「対象外のデータ種」と判断してしまい、 蓄積できない状態となっております。対処するには、該当箇所のコード修正が必要です。

なお、現在改修中の#83の修正適用により本バグは発生しなくなるため、そちらの改修で本不具合の対処も含めることとします。

83では、book-manageの蓄積定義取得APIを呼び出す箇所を、Analyzerクラスからの取得に改修するため、本件も解消いたします。

参考)#83:https://github.com/Personal-Data-Linkage-Module/pxr-linkage/issues/83


上記内容を最終回答とさせて頂きます。 本件に関して、追加でのご確認等があれば、ご返信お願い致します。 ご返信がないまま、1週間経過しましたら、Closeさせて頂きます。 Close後にもReopenは可能ですので、Slack等でご連絡ください。

jou-imaizumi commented 7 months ago

ご回答ありがとうございます。

83 で解消されること承知しました。

よろしくお願いします。

ToshinoriOchiai commented 7 months ago

ご返信ありがとうございます。 引き続き、宜しくお願い致します。