展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

分布式认证授权(三)

  • 客户端通过网关访问资源服务器
# 客户端1模块编写如下
# pom.xml
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

# yml
spring:
  application:
    name: sso-client1 # Eureka页面显示

eureka:
  client:
    registerWithEureka: true # 服务注册开关
    fetchRegistry: true # 服务发现开关
    serviceUrl: # 注册到哪一个Eureka Server服务注册中心,多个中间用逗号分隔
      defaultZone: http://localhost:6001/eureka
  instance:
    instanceId: ${spring.application.name}:${server.port} # 指定实例ID,页面会显示主机名
    preferIpAddress: true     #访问路径可以显示IP地址

# 将端口修改为网关的端口
security:
  oauth2:
    client:
      client-id: client1 # 当前客户端id
      client-secret: mengxuegu-secret # 客户端的密码
      user-authorization-uri: http://localhost:7001/auth/oauth/authorize #请求认证的地址,获取授权码地址
      access-token-uri: http://localhost:7001/auth/oauth/token # 请求令牌的地址
    resource:
      jwt:
        # 当用户授权之后会响应一个授权码,重定向到当前应用的 http://localhost:9001/login?code=xxx
        # 自动的会对 /login 去获取令牌,获取到令牌后会通过 key-uri 获取到的公钥进行解密然后本地身份认证和授权(Session)
        key-uri: http://localhost:7001/auth/oauth/token_key # 获取公钥

# 启动类添加注解
@EnableEurekaClient

# 将配置类中的端口修改为网关端口
http://localhost:7001/auth/logout

# 客户端2模块中做同样的修改
  • 测试:启动服务注册中心、网关、认证服务器、资源服务器、客户端1、客户端2
# 访问客户端1
http://localhost:9001/

# 访问客户端2
http://localhost:9002/

# 客户端1认证后,客户端2也可以直接访问了,测试成功
admin:1234
posted @ 2022-07-01 14:08  DogLeftover  阅读(22)  评论(0编辑  收藏  举报