client_secretは完全に秘匿するものなのか、それとも見えてしまうのはしょうがないものなのでしょうか?
secretという名の通り秘匿するべきものです。
ただ、そもそも質問者さんの場合はLaravel Passport (OAuth2)
を使う必要はありません。
追記依頼の質問に対する回答が「自サイト(同一ドメイン)のみでのやり取りを考えています」とのことですので。
LaravelとVue.jsを使いmailとpasswordでログイン出来る仕組みを作成
Laravelがデフォルトで用意しているトークンで対応するか、
jwt-authのようなライブラリを使ってJWTで対応されることを強く推奨します。
どこまでOAuth2
を理解されているかわかりませんが、仕様はrfc6749で定義されています。
そちらの冒頭にも記載されている通り、基本的に**OAuth2
はデータへのアクセスをthird-party application
に「許可」するためのフレームワーク**です。
もちろん質問者さんがやろうとしているようにOAuth2
のResource Owner Password Credentials Grant(以下Password Grant)をfirst-party application
の「認証」に適用できないことはないですがOAuth2
の本来の目的から外れる上、費用対効果が低いのでオススメしません。
もし、秘匿すべきものであれば秘匿方法などご教授いただきたいです。
もしLaravel Passport
(以下パッケージ)が要求するclient_secret
をべき論で隠すというのであれば、こちらのようにクライアントの認証情報をサーバーに隠すことになるでしょう。
しかし、そもそもrfc的にはPassword Grantでclient_secret
を渡す必要が基本的にありませんので、client_secret
を必ず渡さないといけないというのはパッケージ独自の仕様となります。
https://tools.ietf.org/html/rfc6749#section-4.3.2
パッケージがclient_secret
を要求することについては以下で議論されてるっぽいので、将来的にclient_secret
を渡さなくても良くなるかもしれません。
https://github.com/laravel/passport/issues/984
https://github.com/thephpleague/oauth2-server/issues/889
以上の通り、もしLaravel Passport
を使う明確な理由をお持ちで、どうしてもそれを使わなければならないというのであれば引き止めはしませんが、質問者さんの場合は別の方法をおすすめしますという回答になります。
以下はTeratailで関連する質問です。OAuth2
の仕様を絡めてそもそも的な回答ではないですが、少しでも参考になれば。
API - laravelを使ってapiサーバを作る際のログイン認証の仕組みで困っています。|teratail
PHP - Lalavel でログインしているか外部から確認したい|teratail