I am developing and API (laravel passport) services and a first-party app (VueJs) to consume api.
Api will have a 2 parts
Public - means user do NOT need to be logged in to see a content
Private - means user do NEED to be logged in to see a content
Token for Public areas:
Since the application is developed by trusted source (same developers for api) I should be using a Client Credentials grant-type. However, since this is also a web-app, client credentials' confidentiality is not guaranteed.
So then I would need to use an Implicit grant type where a client_secret is not required. Then a user will have to authorize, which doesn't make much sense for a first-party app.
Token for Private areas:
It is obvious that I just need to use a Resource Owner Password Credentials grant type. Confusion come, as the client credentials will still be passed together with user credentials. And the client credentials can be used in public areas.
I am so very confused as which of the grant type(s) should be used in this case? Or is it fine to just use different grant types together?