Spring Security Oauth2 — Episódio 2
Eu aqui novamente again, bora falar de Resoucer Server, mas precisamente de como garantir segurança do seu Resoucer Server para os clients autenticados, isso mesmo, clients autenticados não podem ou não devem poder ter acesso a todos os servidores de recursos. Então bora lá, vou te falar o que ninguém te falou.
Como dito anteriormente, seus clients autenticados precisam ser checados se tem acesso ao servidor de recursos que ele está requerindo. Por quê isso ? Imagine que o client 1 tem acesso ao servidor A e você tem um alfabeto de servidores. Outros clients tem mais acessos, mas nenhum tem acesso a todo o alfabeto, pois nenhum precisa de todos os recursos. No cenário em que você não configura os seus Resource Servers e nem os seus clients com o resourceId, qualquer atacante em posse de 1 token validado por qualquer client seu pode requisitar em qualquer Resource Server, ou seja, basta ele ter acesso a 1 token autenticado e isso pode ocorrer inclusive entre diferentes ambientes. (calma, existem outras configurações de segurança e validações que são feitas, vamos falar delas nos próximos episódios da série, mas por enquanto estamos falando do resourceId)
Isso acontece, porquê existe uma classe OAuth2AuthenticationManager que implementa AuthenticationManager, essa classe tem o método authenticate responsável por efetuar um conjunto de validações, dentre elas se o client tem o resourceId requerido pelo Resource Server.
Mas ele só valida se você configurou ao cadastrar seu client adcionando os ResourcerIds e se no seu Resoucer Server, você setou o resourceId no seu ResourceServerSecurityConfigurer, por meio do método configure que recebe ele como parâmetro, como mostrado acima.
Caso qualquer um desses seja null, ou se a lista do client for vazia, ele não vai checar se a lista de resourceIds do client possue o resourceId do Resource Server (como mostrado acima), assim sua aplicação pode ter um ponto de falha e você nem sabia.
Por isso é importante configurar os resourceIds dos agentes envolvidos, afinal, vivemos a era da informação e proteger os recursos, a informação, é o principal motivo da preocupação com segurança e você não vai querer ver a segurança dos seus dados sendo implodida por algo que nem é tão complicado.
É isso, vlw fui tmj \m/