当前位置:首页 > Java技术文章 > 详解基于Spring Cloud几行配置完成单点登录开发

Spring Cloud几行配置完成单点登录开发实例讲解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:144

详解基于Spring Cloud几行配置完成单点登录开发

单点登录概念

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。登录逻辑如上图

基于Spring 全家桶的实现

技术选型:

  1. Spring Boot
  2. Spring Cloud
  3. Spring Security oAuth2

客户端:

maven依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.security.oauth</groupId>
  <artifactId>spring-security-oauth2</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-jwt</artifactId>
</dependency>

EnableOAuth2Sso 注解

入口类配置@@EnableOAuth2Sso

@SpringBootApplication
public class PigSsoClientDemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(PigSsoClientDemoApplication.class, args);
  }

}

配置文件

security:
 oauth2:
  client:
   client-id: pig
   client-secret: pig
   user-authorization-uri: http://localhost:3000/oauth/authorize
   access-token-uri: http://localhost:3000/oauth/token
   scope: server
  resource:
   jwt:
    key-uri: http://localhost:3000/oauth/token_key
 sessions: never

SSO认证服务器

认证服务器配置

@Configuration
@Order(Integer.MIN_VALUE)
@EnableAuthorizationServer
public class PigAuthorizationConfig extends AuthorizationServerConfigurerAdapter {
  @Override
  public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
    clients.inMemory()
        .withClient(authServerConfig.getClientId())
        .secret(authServerConfig.getClientSecret())
        .authorizedGrantTypes(SecurityConstants.REFRESH_TOKEN, SecurityConstants.PASSWORD,SecurityConstants.AUTHORIZATION_CODE)
        .scopes(authServerConfig.getScope());
  }

  @Override
  public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
    endpoints
        .tokenStore(new RedisTokenStore(redisConnectionFactory))
        .accessTokenConverter(jwtAccessTokenConverter())
        .authenticationManager(authenticationManager)
        .exceptionTranslator(pigWebResponseExceptionTranslator)
        .reuseRefreshTokens(false)
        .userDetailsService(userDetailsService);
  }

  @Override
  public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
    security
        .allowFormAuthenticationForClients()
        .tokenKeyAccess("isAuthenticated()")
        .checkTokenAccess("permitAll()");
  }

  @Bean
  public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
  }

  @Bean
  public JwtAccessTokenConverter jwtAccessTokenConverter() {
    JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
    jwtAccessTokenConverter.setSigningKey(CommonConstant.SIGN_KEY);
    return jwtAccessTokenConverter;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于Java的全部知识点内容总结,大家还可以在下方相关文章里找到java图形界面编程的代码详、 Java文件和base64流相互转换、 Java实现快速排序原理分析、 等java文章进一步学习,感谢大家的阅读和支持。

上一篇:Java ArrayList底层实现代码分析

下一篇:java实现基于opencv全景图合成实例

展开 +

收起 -

相关内容
Spring Cloud微服务实战

《Spring Cloud微服务实战》 从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,《Spring Cloud微服务实战》主要

查看详情
重新定义SPRING CLOUD实战

本书由Spring Cloud中国社区官方撰写,基于Spring Cloud的Finchley.RELEASE版本,核心成员来自原阿里、蚂蚁金服、金融等互联网企业,经验丰富。

查看详情
Spring Cloud微服务架构进阶

本书从当前流行的微服务架构理论出发,详细介绍了Spring Cloud的每一个核心模块,并提供了大量的源码讲解,以及各个核心模块和主要功能的使用方法,理论与实践相结合,可以作为微服务架构

查看详情
Spring Cloud与Docker微服务架构实战

Spring Cloud与Docker微服务架构实战 可分为三部分,第1章对微服务架构进行了系统的介绍;第2-11章使用Spring Cloud开发框架编写了一个电影售票系统;第12-14章则讲解了如何将微服务应用运行在Do

查看详情
Spring Cloud微服务:全栈技术与案例解析

本书的读者对象主要是Java开发人员:特别是工作1到3年这种工作经验的开发人员,这个阶段的开发人员技术能力一般,正需要一些实用的技术和经验来提升自己,Spring Cloud正是

查看详情
Spring Cloud微服务架构开发实战

资深架构师手把手带你实战微服务;提供从设计、开发、部署到运维的一站式解决方案;涵盖Spring Boot微服务开发、Spring Cloud核心组件、Docker部署微服务应用;详解大量易于构建、运行

查看详情
学习笔记
网友NO.852813

spring cloud中启动Eureka Server的方法

本文介绍了spring cloud中启动Eureka Server的方法,分享给大家,具体如下: 一、新建工程 二、工程结构 三、修改配置文件 # eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。由于当前这个应用就是Eureka Server,故而设为false # eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。 # eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。 server: port: 8761 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka // Eureka Server注册服务的地址 四、添加开启Eureka Server注解 package com.chhliu.springcloud.……

网友NO.560677

Spring Cloud如何使用Feign构造多参数的请求

本节我们来探讨如何使用Feign构造多参数的请求。笔者以GET以及POST方法的请求为例进行讲解,其他方法(例如DELETE、PUT等)的请求原理相通,读者可自行研究。 GET请求多参数的URL 假设我们请求的URL包含多个参数,例如http://microservice-provider-user/get?id=1} 然而,这种写法并不正确,控制台会输出类似如下的异常。 feign.FeignException: status 405 reading UserFeignClient#get0(User); content: {"timestamp":1482676142940,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request method 'POST' not supported","path":"/get"} 由异常可知,尽管我们指定了GET方法,Feign依然会使用POST方法发送请求。 正确写法如下: (1) 方法一 @FeignClient(name = "microservice-provider-user")public interface UserFeignClient { @RequestMapping(value = "/get", method = RequestMethod.GET) public User get1(@RequestP……

网友NO.247121

详解spring cloud分布式关于熔断器

spring cloud分布式中,熔断器就是断路器,其实都是一个意思。 为什么要使用熔断器呢? 在分布式中,我们会根据业务或功能将项目拆分为多个服务单元,各个服务单元之间通过服务注册和订阅的方式相互依赖和调用功能,随着项目和业务的不断拓展,服务单元数量也逐渐增多,相互之间的依赖关系也越来越复杂,这时候,可能会某个服务单元出现问题或网络原因依赖调用出错或延迟,此时如果调用该依赖的请求不断增加,那么要调用该服务的服务将都会等待或者出现故障,如果后续连锁反应越来越多,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务的依赖会导致服务之间的故障传播,从而迎来“雪崩效应“。为了解决这种每个点或多个点的故障,就有了熔断器的出现。 什么是熔断器? 熔断器就相当于电路中的保险丝、保护器,它可……

网友NO.418803

SpringCloud配置刷新原理解析

我们知道在SpringCloud中,当配置变更时,我们通过访问http://xxxx/refresh,可以在不启动服务的情况下获取最新的配置,那么它是如何做到的呢,当我们更改数据库配置并刷新后,如何能获取最新的数据源对象呢?下面我们看SpringCloud如何做到的。 一、环境变化 1.1、关于ContextRefresher 当我们访问/refresh时,会被RefreshEndpoint类所处理。我们来看源代码: /* * Copyright 2013-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language g……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757