JSONWS ゲストアクセス

LiferayプラットフォームのJSONWSページは、認証されていないユーザーは、 Liferay_URL/api/jsonws. ただし、これはゲストユーザーがJSONウェブサービスを実行するためのアクセス権を持っていることを意味するものではありません。 ゲストでアクセスした場合、JSONWSページにWebサービスが一覧表示されていても、ほとんどのWebサービスを呼び出すことができません。 例えば、ゲストが /announcementsdelivery/update-deliveryを使用している場合、 ゲストとしてメソッドを呼び出すと、以下のようなエラーが発生します。

Access denied to com.liferay.announcements.kernel.service.AnnouncementsDeliveryService#updateDelivery

これは、基礎となるサービスがサービスのタイプと目的に応じてLiferayのパーミッション・フレームワークによって保護されているためです。例えば、上記の updateDelivery サービスコールを実行するためには、ユーザーはユーザー・エンティティにADD USERとUPDATEパーミッションを持っていなければなりません。

認証されていないサービス・コールは、Liferayプラットフォーム・インスタンスのリモート・メソッド、またはプラグインに @AccessControlled アノテーションがある場合にのみ動作します。 ゲストのように呼び出すことができるサービスが少しあります , 例えば /country/get-countries.これは、次のコードの @AccessControlled(guestAccessEnabled = true) アノテーションで、その特定のメソッドがゲスト経由でアクセスできるようになっているからです。

Line 103 in CountryServiceImpl.java

    @AccessControlled(guestAccessEnabled = true)
    @Override
    public List<Country> getCountries(boolean active) {
        return countryPersistence.findByActive(active);
    }

DXP 7.1 GA1 および DXP 7.0 SP7/FP57の時点でゲストがアクセスを許可しているその他のリモートサービス .

/assetentry/increment-view-counter

/calendar.calendarbooking/search

/country/get-countries

/pushnotifications.pushnotificationsdevice/delete-push-notifications-device

/region/get-regions

/sync.syncdlobject/get-sync-context

APIサービスは、コンパイル時に @AccessControlAdvice アノテーションを使用してパブリックに設定することができます。 この では、 では実行時の設定ができず、ポータル管理者 は、認証なしでサービスを利用できるようにするために ポータルを再コンパイルしなければならないことに注意してください。

また、portal-ext.propertiesファイルで以下のポータルプロパティを falseに設定することで、JSON APIページを完全に無効にすることも可能です。

    #
    # Set this property to true if JSON web services are discoverable through
    # the API page.
    #
    jsonws.web.service.api.discoverable=true
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています