私は可能であれば手助けをしたいという独特の状況があります。
私の会社は多くのWordPressサイトを管理しています。各サイトには独自のユーザーセットがあります(すべてのサイトで同じユーザーですが、一部のユーザーはXにのみアクセスし、他のユーザーはYにアクセスし、他のユーザーはX&Yなど)。私たちはカスタムSSOプラグインを使用して、パーミッションなどを使用してこれらすべてを管理します。これらはすべて完全に機能します。
私はLaravelで、パブリックルートとプライベートルートの両方を持つアプリを作成しました。プライベートルートにアクセスするにはLaravel Passport/OAuthを使用します。その面のすべても完璧に機能します。
しかし、私は今、WordPressユーザーが私のAPIのいくつかの保護されたルートにアクセスする必要があるという状況に悩まされています。
WP/OAuthへの関心の大部分は、OAuthサービスプロバイダ(Twitter/Google/LinkedIn/etc)を使ってWordPressにログインしたいという私の状況とは基本的に反対であることを知っています。
APIサイトとWordPressサイトはまったく異なるアーキテクチャでホストされており、どちらか一方のデータベースにアクセスする手段はありません。
私が探しているのは、私のWordPressユーザーが2セットの同じユーザーを維持する必要なしに、私のAPIで自分自身を「承認」するための簡単な方法です。理想的には、WordPressユーザーは必ずしもAPI内で作成されるわけではありませんが、監査ログを使用して、API内で誰が何をしているのかを追跡します。
どんな助け、または同様のボートの人々からの経験も素晴らしいでしょう!
私は興味を持っている人のためにこれとは少し違うアプローチをしました。
私は自分のAPIをできるだけ軽量にしておき、バージョン/リビジョンやユーザーに肥大させないようにしたかったので、2番目のLaravelインスタンスを作成しました。
この2番目のLaravelインスタンス(consumer
)では、SSOプロバイダとして既にGoogleを使用しているので、Laravel Socialiteを使用しました。ユーザーがログインします。これは、ユーザーが私のAPIと対話する場所です。すべてのアクションはコンシューマーに記録され、私のAPI DBから除外されます。
consumer -> API
コミュニケーションのために、私は私のAPIにLaravel Passportをインストールし、password_client
を使用し、パスワードトークンをconsumer
に格納し、私のconsumer
の裏側でGuzzleを使用してAPI
と話します。
WordPressの管理者メニューにconsumer
アプリへのリンクを追加するためのWordPressプラグインを作成しました。ドメインの不一致が原因で、GoogleのSSO/OAuthログインページをiFrameに配置しようとしましたが、不可能です。
今はかなりうまくいきました!そのほとんどをWordPressのプラグインに変換したいのですが、ユーザーが編集/表示できるので、所有者/認証トークンをプラグインに保存したくはありません。