nacos oaut服务地址_GitHub - zhang1g2/open-cloud: 微服务开放平台-基于SpringCloud2.0+,SpringSecurity,Oauth2,nacos服务...

微服务开放平台

简介

搭建基于OAuth2的开放平台、为APP端提供统一接口管控平台、为第三方合作伙伴的业务对接提供授信可控的技术对接平台.

统一API网关、访问鉴权、参数验签、外部调用更安全.

分布式架构,基于服务发现,Fegin(伪RPC)方式内部调用,更便捷.

深度整合SpringCloud+SpringSecurity+Oauth2,更细粒度、灵活的ABAC权限控制.

前后端分离方式开发应用,分工合作更高效!

代码合理封装、简单易懂、

默认登录账号:admin 123456

测试登录账号:test 123456

欢迎吐槽

学习交流群:760809808

代码仓库

请随手给个Star! 感谢支持!

代码结构

open-cloud

├── docs

├── bin -- 执行脚本

├── config -- 公共配置,用于导入到nacos配置中心

├── generator -- mapper生成器

├── sql -- sql文件

├── opencloud-common -- 公共类和jar包依赖

├── opencloud-common-core -- 提供微服务相关依赖包、工具类、全局异常解析等...

├── opencloud-common-starter -- SpringBoot自动扫描

├── opencloud-gateway -- API网关模块

├── opencloud-gateway-client -- API网关接口

├── opencloud-gateway-provider -- API网关(port = 8888)

├── opencloud-upms -- 通用权限模块

├── opencloud-base-client -- 平台基础服务接口

├── opencloud-base-provider -- 平台基础服务(port = 8233)

├── opencloud-auth-client -- 平台认证服务接口

├── opencloud-auth-provider -- 平台认证服务(port = 8211)

├── opencloud-app -- 应用服务模块

├── opencloud-admin-provider -- 运营后台服务(port = 8301)

├── app-uaa-provider-demo -- 移动应用用户认证中心(多认证中心演示)(port = 7211)

├── opencloud-msg -- 公共消息模块

├── opencloud-msg-client -- 消息服务接口

├── opencloud-msg-provider -- 消息服务(port = 8266)

├── opencloud-scheduler -- 任务调度模块

├── opencloud-scheduler-client -- 任务调度接口

├── opencloud-scheduler-provider -- 任务调度服务(port = 8501)

├── opencloud-bpm -- 公共工作流模块...

├── opencloud-bpm-client -- 工作流接口

├── opencloud-bpm-provider -- 工作流服务(port = 8255)

系统结构图

功能预览

数据模型

基础权限模型

网关访问限制模型

快速开始

上手难度:★★★

本项目基于springCloud打造的分布式快速开发框架. 需要了解SpringCloud,SpringBoot开发,分布式原理。

注:Nacos版本选择V0.9.0以下版本. 1.0.0以上版本暂未测试!

准备环境

Java1.8

阿里巴巴Nacos服务发现和注册中心 nacos.io

Redis

RabbitMq (需安装rabbitmq_delayed_message_exchange插件 下载地址)

Mysql

Maven

Nodejs

导入sql脚本

docs/sql/oauth2.sql

docs/sql/base.sql

docs/sql/gateway.sql

docs/sql/quartz.sql && scheduler.sql

导入Nacos公共配置

新建配置

docs/config/db.properties > db.properties

docs/config/rabbitmq.properties > rabbitmq.properties

docs/config/redis.properties > redis.properties

docs/config/common.properties > common.properties

修改主pom.xml

初始化

maven clean install

本地启动,默认不用修改

127.0.0.1:8848

127.0.0.1:8848

本地启动

AuthApplication (必须)

BaseApplication (必须)

GatewayApplication (必须)

AdminApplication (结合运营后台)

4个服务启动成功后。就可以依赖这些服务进行微服务开发了。

访问 http://localhost:8888

前端启动

npm install

npm run dev

项目打包部署

maven多环境打包

mvn clean install package -P {dev|test|online}

项目启动

./docs/bin/startup.sh {start|stop|restart|status} open-base-provider.jar

./docs/bin/startup.sh {start|stop|restart|status} open-auth-provider.jar

./docs/bin/startup.sh {start|stop|restart|status} open-gateway-provider.jar

./docs/bin/startup.sh {start|stop|restart|status} open-admin-provider.jar

集成开发

1.创建新maven项目

opencloud-common-starter

com.github.lyd

${opencloud.common.version}

2.配置 bootstrap.properties 或bootstrap.yml

#服务器配置

server.port=4560

#spring配置

spring.profiles.active=${profile.name}

spring.application.name=my-service

#Nacos配置中心

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

#Nacos共享配置

spring.cloud.nacos.config.shared-dataids=common.properties,db.properties,redis.properties,rabbitmq.properties

spring.cloud.nacos.config.refreshable-dataids=common.properties

spring.cloud.nacos.config.namespace=${config.namespace}

#Nacos服务发现

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

spring.cloud.nacos.discovery.metadata.name=消息服务

# springCloud资源服务器默认配置,默认使用common公共的客户端ID。也可以使用新的客户端ID

security.oauth2.client.client-id=${opencloud.common.client-id}

security.oauth2.client.client-secret=${opencloud.common.client-secret}

security.oauth2.client.scope=${opencloud.common.scope}

security.oauth2.client.access-token-uri=${opencloud.common.access-token-uri}

security.oauth2.client.user-authorization-uri=${opencloud.common.user-authorization-uri}

security.oauth2.resource.token-info-uri=${opencloud.common.token-info-uri}

security.oauth2.resource.user-info-uri=${opencloud.common.user-info-uri}

#自定义API文档

opencloud.swagger2.enabled=true

opencloud.swagger2.title=消息服务

opencloud.swagger2.description=消息服务

创建MyServiceApplication.java

//开启feign RPC远程调用

@EnableFeignClients

// 开启服务发现

@EnableDiscoveryClient

@SpringBootApplication

public class MyServiceApplication {

public static void main(String[] args) {

SpringApplication.run(MyServiceApplication.class, args);

}

}

4.创建ResourceServerConfiguration.java 资源服务配置

@Configuration

@EnableResourceServer

public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {

@Autowired

private ResourceServerProperties properties;

@Override

public void configure(ResourceServerSecurityConfigurer resources) throws Exception {

// 构建远程获取token,这里是为了支持自定义用户信息转换器

resources.tokenServices(OpenHelper.buildRemoteTokenServices(properties));

}

@Override

public void configure(HttpSecurity http) throws Exception {

http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)

.and()

.authorizeRequests()

// 内部访问直接放行

.antMatchers("/v1/**").permitAll()

// 只有拥有actuator权限可执行远程端点

.requestMatchers(EndpointRequest.toAnyEndpoint()).hasAnyAuthority(CommonConstants.AUTHORITY_ACTUATOR)

.anyRequest().authenticated()

.and()

//认证鉴权错误处理,为了统一异常处理。每个资源服务器都应该加上。

.exceptionHandling()

.accessDeniedHandler(new OpenAccessDeniedHandler())

.authenticationEntryPoint(new OpenAuthenticationEntryPoint())

.and()

.csrf().disable();

}

}

5.启动项目

多认证中心

平台系统用户认证中心(opencloud-auth-provider)

移动应用用户认证中心(app-uaa-provider-demo)

用户认证中心2 - 用户认证中心2

用户认证中心N - 根据实际应用可创建多个用户中心

针对不同应用的用户数据是单独存储,所以需要建立不同的认证中心提供用户认证。

采用oauth2统一协议,每个APP拥有独立的认证授权中心.

区分用户数据源

共享客户端oauth_client_details信息.

统一方法获取OpenHelper.getAuthUser().认证中心标识-authCenterId.

个性定制,可单独提供手机验证码等方式登陆.

第三方接口调用

1.创建应用信息

2.配置开发信息

3.授权功能,默认必须勾选获取当前登录信息接口

4.使用postman测试调用

例:

应用信息生成的

AppId: 1553588629729

AppSecret: 1a616ba3f91141efa1c4f4a1ce725e2c

多认证中心,密码模式

移动应用用户认证中心:localhost:7211/oauth/token

首先配置客户端密码

输入用户username和password

获取用户信息

授权码模式(authorization_code) 需要用户认证

获取code

浏览器访问

http://localhost:8211/oauth/authorize?response_type=code&client_id=1553588629729&redirect_uri=http://www.baidu.com

未登录将进入登录页,输入系统用户登录信息

用户确认授权信息

重定向到回调地址,获得code

使用postman通过code获取access_token,

使用access_token获取已授权资源

客户端模式(client_credentials)

http://localhost:8211/oauth/token?grant_type=client_credentials&client_id=1553588629729&client_secret=1a616ba3f91141efa1c4f4a1ce725e2c

获取客户端token

访问未授权资源提示权限不足!

访问已授权资源,正常返回数据(如果授权完,还提示权限不足,由于上次令牌存在缓存信息,重新获取token即可)

更新日志

v-1.0.0 2019-03-18

1. 重构项目结构

2. 重构表结构

3. 重构授权逻辑

4. 提取公共配置,并迁移到Nacos配置中心

5. 优化功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值