微服务架构实战:商家管理后台与sso设计:SSO设计

本文介绍了如何在微服务架构中实现单点登录(SSO)设计,重点讲解了使用Spring Security OAuth2框架进行SSO服务端和客户端的配置。内容包括SSO的基本配置、第三方应用授权设计、登录认证设计以及SSO主页设计。通过自定义用户详情和服务,实现了登录验证和权限管理,确保了接入SSO的第三方应用的安全访问。
摘要由CSDN通过智能技术生成

SSO设计

Spring Security是一个功能强大、可定制的身份验证和访问控制框架.Spring Security OAuth2是一个基于Spring框架支持第三方应用授权的工具组件。通过使用Spring Security OAuth2,我们可以在商家后台中进行单点登录(SSO)设计,从而为多个微服务应用的系统集成,使用统一的安全控制管理。

SSO设计分为服务端和客户端两大部分。SSO服务端为每个应用提供了统一的访问控制和授权认证服务,是一个Web UI微服务应用,在模块merchant-sso中进行开发,包含了用户登录设计、主页设计和认证服务设计等方面的内容。SSO客户端是指为用户提供本地服务的程序

SSO的基本配置

SSO的基本配置与一般的Web UI应用项目配置基本相同,即在 Web UI应用项目配置的基础上,增加 Spring Cloud OAuth2的依赖引用,代码如下所示:

<dependency>
<group Id>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>

这个组件已经包含了Security 和OAuth2两套组件体系,其中,Security提供了访问控制功能,OAuth2提供了第三方应用授权认证的服务。

在应用的配置文件 application.yml中,设定SSO应用的服务端口,并设置一个cookie保存用户的登录信息,代码如下所示:

server:
port:8000
session:
cookie:
name: SESSIONID

为保证第三方应用在授权之后能够被正常访问,我们必须在配置文件中增加接入SSO客户端返回地址的列表,并使用正确的格式“http:/l域名或IP:端口/login”进行设定,代码如下所示;

#SSo客户端返回地址的列表ssoclient:
redirecturis:
- http://localhost:8081/login- http://127.0.0.1:8081/1ogin

sso第三方应用授权设计

为了给接入SSO的第三方应用(这里指接入SSO服务的其他微服务应用)进行授权,我们创建了一个配置类AuthServerConfig,它继承了AuthorizationServerConfigurerAdapter,代码如下所示:

@Configuration
@EnableAuthorizationServer
@EnableConfigurationProperties(clienturls.class)
public class authServerConfig extends AuthorizationServerConfigurerAdapter
CAutowired
private Clienturls clienturls;
@Override
public void configure (AuthorizationServerSecurityConfigurer oauthServer)throws Exception {
oauthServer.tokenKeyAccess( "permitAll ()")
.checkTokenAccess("isAuthenticated()");
@override
public void configure (ClientDetailsServiceConfigurer clients) throwsException {
clients.inMemory()
.withClient ( "ssoclient")
.secret(passwordEncoder ().encode ("ssosecret")).authorizedGrantTypes ("authorization_code").scopes ( "user_info")
.autoApprove(true)
.redirectUris(clienturls.getRedirecturis());
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();converter. setSigningKey ( "demoSige");
return converter;
}
aoverride
public void configure(AuthorizationServerEndpointsConfigurer endpoints)throws Exception {
endpoints.accessTokenConverter(jwtAccessTokenConverter());
}
@Bean
public BCryptPasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}

在上面的配置类中,包含以下主要功能:

(1)使用注解@EnableAuthorizationServer 开启 SSO服务器的功能。(2)重写第一个configure,开启使用Token进行授权的功能。

(3)重写第二个 configure,为客户端指定表单页面授权的方式,即 authorization_code,并且设定客户端授权时使用的用户名和密码分别为ssoclient和 ssosecret。同时,导入配置中的客户端返回地址列表,并设定客户端返回地址列表为redirectUris。另外,通过 autoApprove(true)设定为自动确认授权,省略了客户端授权时必须手动确认的步骤。

(4)重写第三个configure,使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值