質問: 現在laravel5.5を利用してwebアプリケーションを作成しております。 そこで、api認証の実装が必要な状態となりまして、 laravelPassportについて3日間ほどwebの記事を漁っていたのですが、 いまいちわかりませんでした...。 もっとも基本的な実装は問題なく出来たのですが、今後使っていく事を考えると、 仕様について理解していないと厳しいかと思いまして。 上記にある基本的な実装というのは、 クライアントを作成->そのクライアントにアクセスしてアクセストークンを取得->取得したトークンを利用して認証のかかったapiにアクセス の流れです。 まずそもそものoauth認証の流れについて確認したいのですが、 AとBというアプリがあって、AがBのAPIを使いたい場合を想定します。 1.Bは新たにA用にクライアントを作成し、そのクライアントにアクセスするための情報をAに渡す。 2.Aはその情報を使ってクライアントにアクセスしBのapiへのアクセストークンを要求する。 3.そこで取得したアクセストークンを利用して実際にBのapiにアクセスする。 という認識なのですが... この流れはあってるんでしょうか?? passportの話に戻ります。 具体的にはここに権限を追加していきたいのです。 恐らくscopeと言われるものを使っていく事になるのかと思うのですが、 このscopeがいまいちしっくりきません。 クライアントにアクセストークンを要求する際にスコープを指定して、 「この権限を持ったアクセストークンが欲しい」 とするのはわかるのですが、これってスコープの意味まるで無くないですか? 結局[scope="*"]と指定されたらそれだけで全権限を貰えちゃうってことですよね? この仕様だと、クライアントへのアクセス情報さえ持っていればすべてのapiにアクセス可能という事になっていしまうかと思うのですが... 本来このスコープ(アクセス権限)というのはクライアントに定義されているべき物ではないですか? 「そのクライアントにアクセストークンを要求したらこの権限を持ったアクセストークンが返ってくる」 という仕組みであれば理解できるのですが... 実際はどのような仕様になっているのでしょうか?
回答: > > Note: このドキュメントは皆さんが、OAuth2に慣れていることを前提にしています。OAuth2について知らなければ、この先を続けて読む前に、一般的な用語とOAuth2の機能について予習してください。 > > https://readouble.com/laravel/6.x/ja/passport.html > > > PassportはOAuthサーバーなのでOAuthの知識が足りない人がいきなりOAuthサーバー作るのは難しい。 OAuthをクライアント側から使った経験があればサーバー側のこれはあれかとすぐ分かる。 どんなスコープがあるかを決めるのはサーバー側。 クライアントはどのスコープを使うか選ぶだけ。