Tenho um desafio de integrar o login atual da empresa com o login OAuth2 da Vtex, mas nao queremos redirecionar o usuário para a pagina de login do server, pois ja temos um serviço em rest pra isso!
Então estou autenticando o usuário via rest, e solicitando o code com um jwt, mas vejo q a impl do Spring nao permite isso, será q devo customizar alguma coisa ou to indo pelo caminho errado?
Eu ainda não consegui entender a relação entre a página de login do server e o serviço rest p/ login. Preciso de um pouco mais de contexto pra ver se consigo ajudar de alguma forma.
Primeiro, não conheço o VTEX. Qual é a ideia dele? Dei uma olhada por cima e parece que essa plataforma integra lojas de terceiros p/ criar um marketplace? É isso mesmo?
Outra coisa que ajudaria a entender melhor o contexto é, quem seria o Authorization Server nessa solução? Você já tem uma aplicação onde os usuários do marketplace tem conta? Essa sua aplicação seria o Authorization Server e o Resource Server? Quem é o Client nesse contexto, VTEX? Pela sua pergunta, parece que VTEX é quem gerencia as contas dos usuários e como a plataforma fornece a página de login, eu chutaria que ela tem o papel de Authorization Server aqui.
Se esse for o caso, mesmo que você crie um login customizado onde você faz a autenticação através de um REST endpoint, como isso funciona? Seu serviço rest delega a autenticação no backend p/ VTEX? Se sim, dentro do contexto de OAuth2, em algum momento além da autenticação, o usuário precisaria autorizar os escopos solicitados pela aplicação Client (que quer ter acesso a dados do Resource Owner que eu acredito que seja o seu usuário final).
Ainda supondo que seu serviço rest esteja cuidando de tudo isso (autenticação e autorização), esse endpoint precisaria redirecionar o usuário p/ a “redirection URI” (fornecida no começo do fluxo ou registrada previamente) com um authorization code na URL.
Dessa forma o Client da história iria usar esse auth code p/ obter um access token junto ao Authorization Server.
Dadas todas minhas suposições acima, eu confesso que não sei bem onde o Spring Security entraria na história, pois dado meu entendimento o fluxo OAuth2 é controlado pela VTEX e seu serviço rest está fazendo um meio de campo p/ fornecer uma experiencia customizada p/ o usuário.
Bom, vamos continuar esse papo aí Nildo. Acho que com tanta suposição é capaz de eu não ter conseguido ajudar muito.
Agradeço sua atenção na minha duvida, quero compartilhar o link do diagrama de integração com VTEX, acredito que ele irá responder as suposições.
No diagrama, existem 3 representações, primeiro user agent, pode ser um app escrito em React Native ou site escrito em Reactjs, ambas soluções da empresa que trabalho. Segundo VTEX ID, gateway dos serviços de ecommerce da VTEX. Terceiro “Custom Identity provider”, é uma api nossa que gerencia o cadastro de clientes da empresa e cuida da autenticação e autorização, este seria o Authorization e Resource Server, ambos no mesmo servidor, temos planos de manter o Authorization separador no futuro. É importante dizer, que hoje temos na api de gerenciamento de clientes, um serviço rest para autenticar o cliente, e devolve um jwt para autorizar acesso a recursos do cliente.
Voltando agora para minha duvida, minha preocupação foi a exigência da área de negocio em não apresentar a tela de login do Server(como visto no livro), e sim as telas do app ou site para solicitar o code, para tornar isso possível o serviço /oauth/authorize é autenticado via basic com o valor dos inputs. Não encontrei uma restrição na documentação do OAuth sobre autenticação para se obter o code. Agora gostaria de saber, se este foi o melhor caminho?