oauth2 java demo_GitHub - javaGo123/oauth2-demo

本文介绍了一个基于Spring Boot和Spring Cloud的微服务架构实践案例,包括鉴权服务、网关服务及业务服务的开发过程。通过OAuth2实现统一的用户认证与鉴权,使用JWT Token进行身份验证。

一个简单的微服务

包含鉴权服务 auth-service,网关服务 gateway-service,业务层 api-service

所有服务基于 spring boot 2.2.0.RELEASE & spring cloud Hoxton.SR3 进行开发。

api-service 是业务服务,提供业务接口,没有 token 验证;通过 gateway-service 可以访问 api-service 的业务接口,并在 gateway 层面实现了统一的用户认;auth-service 提供用户认证和用户鉴权能力。

auth-service

使用 spring cloud oauth2,实现一个简单的基本的 oauth2 provider

使用 jwt token,使用自定义 JwtTokenStore

提供 /.well-known/jwks.json 端点

gateway-service

使用 spring cloud gateway 实现简单路由

作为 oauth2 resource server 接入 auth-service

api-service

提供简单的 Restful API,通过 gateway-service 调用

运行

依次运行 auth-service,gateway-service,api-service

获取 access token

curl -X POST \

http://localhost:8081/oauth/token \

-d grant_type=password \

-d client_id=test-client \

-d client_secret=test-secret \

-d username=user-username \

-d password=user-password

不带 token 访问接口,返回 401 Unauthorized

curl -X GET http://localhost:8082/api/hello -sI

带 token 访问接口

curl -X GET \

http://localhost:8082/api/hello \

-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzI0ODY3ODksInVzZXJfbmFtZSI6InVzZXItdXNlcm5hbWUiLCJhdXRob3JpdGllcyI6WyJVU0VSIl0sImp0aSI6IjA3MDZmOWUyLWRlMWYtNDg4ZS1hNTJhLTUzMjdiMjU4ZTI4ZiIsImNsaWVudF9pZCI6InRlc3QtY2xpZW50Iiwic2NvcGUiOlsiZGVmYXVsdC1zY29wZSJdfQ.IqSmO7rH_lFpQ8__ZP1rwSDh5S6kw3EPaT3gs-byW_usN5iM0l0ohEV1OCb1jOUjcMoxnqUM-C3ZEND_tVdGlpscNVXT1avkVGw8Rc2Y49_Ee0OYgLwg97LOFdoHgCIEWKqronk5EdZJES1Zv95MbGSO1o6U_mo8My1-znxNgUwYpGt1sNUsaoCRzIKEQR--67IWe3EMmxo1D0IcPPi0fgKbVD2LR7mOQTqvQMHEF4LplS67mbfUWLFJg9Q4gyH0l3ndgGkCIcofPop9-GlwNCgp52RiGQlp8MCXydHbybr-_g-nXrstxSHQ-1iC0ihIMSueDhEuN7gLe5OELBW1oA"

实现思路参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值