制限をかけていないのにAPIから403 forbidden が返ってきます
コンテンツの作成をするAPI(Topics::insert)など、いくつかのエンドポイントはセキュリティ上、ログイン状態での利用が前提となっており、直接パブリックに利用できません。 ログイン処理後に利用するように設計するか、カスタム処理を利用してエンドポイントにリクエストを送ってください。
カスタム処理を利用して認証状態を付与した状態でエンドポイントを利用する方法には以下があります。
api_internal を利用する方法
Api::request_api のエンドポイントで、カスタム処理を呼び出し、呼び出されたカスタム処理で api_internal のプラグインを利用することで、認証情報を付与したい状態でTopics:insertのエンドポイントにリクエストを送ります。
api_internal では member_id
パラメータを渡すことで、指定したメンバーIDが認証された状態でリクエストを実行できます。
カスタム処理の設定
まずカスタム処理で以下のコードを設定します。
{* リクエスト ボディ *}
{assign_array var='body' values=''}
{assign var='body.subject' value=$smarty.request.subject}
{api_internal
var='response'
status_var='status'
endpoint='/rcms-api/39/topics/insert'
method='POST'
queries=$body
member_id='1'}
{assign var=data value=$response}
/rcms-api/39/topics/insert
のエンドポイントは Topics::insert のエンドポイントを使用し、APIの認証方式は「動的アクセストークン」に設定してください。
エンドポイントの設定
次にApi::request_api_post のエンドポイントを作成します。
nameにはカスタム処理で設定した識別子を入力してください。
また、APIは/rcms-api/39/topics/insert
とは別にしてパブリックな認証にして下さい。
例)
Topics::insert:APIのセキュリティを動的アクセストークンにする。
Api::request_api_post:APIのセキュリティをCookieにする。
Swagger UI でrequest_api_postのエンドポイントを叩くと、コンテンツが追加できていることが分かります。
前処理を利用する方法
権限を持ったメンバーIDでログインするカスタム処理を作成し、エンドポイントの前処理に設定することでレスポンスを取得します。
カスタム処理の設定
まずカスタム処理で以下のコードを設定します。コンテンツ定義の閲覧権限をもっているメンバーIDを指定してください。
{login member_id=1 overwrite=false} {* member_id:1としてログインをします *}
エンドポイントの設定
つづいて、追加したカスタム処理をTopics::insert のエンドポイントの前処理に設定します。
Swagger UI でエンドポイントを叩くと、コンテンツが追加できていることがわかります。
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。