Este é um exemplo de implementação de um servidor de autorização OAuth 2.0 com suporte para PKCE (Proof Key for Code Exchange) em Go.
Este servidor de autorização permite que clientes autenticados solicitem tokens de acesso, usando um fluxo de autorização baseado em código. Ele também oferece suporte ao PKCE para garantir a segurança do fluxo de autorização.
Certifique-se de ter Go instalado em sua máquina antes de prosseguir.
- Clone este repositório:
git clone https://github.com/devxbr/auth-server.git
- Navegue para o repositório clonado:
cd auth-server
- Buildar e rodar o servidor
go build ./auth-server
Se preferir, você pode executar o servidor em um contêiner Docker. Siga as etapas abaixo:
-
Certifique-se de ter o Docker instalado em sua máquina.
-
Clone este repositório:
git clone https://github.com/devxbr/auth-server.git
-
Navegue até o diretório clonado:
cd auth-server
-
Construa a imagem Docker do projeto:
docker build -t auth-server .
-
Execute o contêiner Docker:
docker run -p 8080:8080 auth-server
O projeto também inclui um Makefile com os seguintes comandos:
bash build: Compila o servidor Go.
bash
run: Executa o servidor Go.
bash test: Executa os testes no código Go.
bash
start-docker: Constrói e executa o servidor em um contêiner Docker.
Você pode executar esses comandos na raiz do projeto usando make <comando>.
The server will be available at http://localhost:8080.
/oauth2/login
: Endpoint para gerar URL de autorização com PKCE./oauth2/v1/authorize
: Endpoint para manipular solicitações de autorização./oauth2/v1/token
: Endpoint para trocar código de autorização por token./login
: Alias para o endpoint de login.- Rotas de arquivos estáticos para páginas do frontend:
/auth
,/auth/auth.html
,/auth/consent.html
,/private/dashboard.html
.
O servidor está configurado para aceitar requisições CORS apenas de http://localhost:8080
.
Contribuições são bem-vindas! Se encontrar um problema ou tiver alguma sugestão de melhoria, sinta-se à vontade para abrir uma issue ou enviar um pull request.
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.