Estou tentando criar um pequeno aplicativo que usará a API do Spotify. Como é para ser pequeno, eu realmente não quero adicionar nenhuma autenticação, mas ainda assim gostaria de ter "sessões".
Minha ideia atual era, após o fluxo do código de autorização OAuth2.0 ser feito com o Spotify, simplesmente armazenar o userID junto com o token de acesso e atualização e usar sessões de cookie (criptografadas) com esse userID. No entanto, isso parece engraçado, não é um uso indevido do OAuth2.0? Parece que estou tentando usar o OAuth2.0 para autenticação, como o OIDC. Esta abordagem é aceitável ou existe uma maneira melhor de lidar com isso?
Também queria saber como poderia usar o parâmetro "state" se realmente não realizei nenhuma autenticação antes da conclusão do fluxo. Devo também criar uma sessão antes do usuário entrar no fluxo OAuth2.0 e verificá-la no final? Acho que também posso estar entendendo mal a utilidade do parâmetro "estado".
Delegar autenticação a algum servidor OAuth2 externo é um bom caso de uso para OAuth2, e é feito com frequência. OIDC é um exagero para muitos casos de uso, mas é fortemente pressionado pelos IdPs.
Sem o OIDC, isso significa que você só precisa de maneiras alternativas de descobrir um ID de usuário inuqe, e parece que você tem isso. É uma boa ideia manter o fluxo no servidor (o que parece que você tem) e criar seus próprios IDs de sessão. Você não precisa criptografar nada se usar um sistema de sessão.
O parâmetro 'state' permite garantir que o redirecionamento do endpoint de autorização seja realmente feito pelo Spotify. Você pode colocar uma string aleatória lá e validá-la depois. Algumas pessoas também colocam outras informações lá, o que pode ser útil em sistemas sem estado (mas não parece que você tenha um sistema sem estado).
Se o Spotify suportar, é melhor usar o PKCE e, quando fizer isso, você pode esquecer o parâmetro state.