如何进行服务授权以及Spring Security的基本应用

举报
KevinQ 发表于 2022/03/14 17:18:20 2022/03/14
【摘要】 多行不义必自毙。————————《左传 · 郑伯克段于鄢》 问题起源最近工作中需要和数个第三方进行服务对接,都涉及到同一个问题,如何进行服务安全认证,并进一步考虑到当前流行的多服务模式下,如何在多个服务间,即分布式服务间进行分布式的服务安全认证,或身份认证与操作授权。 第三方常用的身份认证与授权方式就目前所对接的第三方来说,大多数的身份认证为access_token认证,即通过约定的key+...

多行不义必自毙。

————————《左传 · 郑伯克段于鄢》

问题起源

最近工作中需要和数个第三方进行服务对接,都涉及到同一个问题,如何进行服务安全认证,并进一步考虑到当前流行的多服务模式下,如何在多个服务间,即分布式服务间进行分布式的服务安全认证,或身份认证与操作授权。

第三方常用的身份认证与授权方式

就目前所对接的第三方来说,大多数的身份认证为access_token认证,即通过约定的key+secret以及指定的加密方式,通过指定接口获取一个特定的token以及token的有效期或者有效截止时间,后续业务接口访问时,每次均需要带上该token即可。

这种方式目前的专业术语叫OAuth 2.0。

推荐阅读阮一峰大佬的博客:OAuth 2.0 的四种方式,**OAuth 的核心就是向第三方应用颁发令牌。**在文章里面提到了4中身份认证方式,分别是授权码,隐藏式,密码式,客户端凭证。

例如,我们上文提到的与第三方交互的token方式就对应阮一峰博客中的凭证式的访问方式。

如下图是我绘制的一个简单的认证请求方式,以便于读者理解。

image-20220314161456380

多服务模式下的身份认证与授权

在目前的情况下,多服务通常指的是微服务,而微服务又以SpringCloud为代表,其使用广泛,组件全面。

SpringCloud中,负责身份认证与授权的有Spring Cloud Security,Netflix Zuul等。

我们今天来看一下SpringCloud Security的基础使用。

首先按照创建springboot的流程,创建SpringCloud Security项目。创建完成后,需要在pom文件中引入以下内容,以便服务启动。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后修改application.properties配置文件,设置端口号:

server.port=8083

并创建一个测试的接口:

package com.springcloud.security.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping("test")
    public String sayHello() {
        return "test hello world";
    }
}

然后,我们启动项目:

image-20220314171013328

在浏览器中输入地址:

localhost:8083/test

发现,浏览器自动跳转到地址localhost:8083/login,其页面如下:

image-20220314171123503

我们接着配置项目。在配置文件中输入以下内容:

# Security
spring.security.user.name=admin
spring.security.user.password=123456

在浏览器输入框中输入对应内容,重试,点击"Sign in"按钮,页面自动跳转到了地址:localhost:8083/test,如下图所示:

image-20220314171640322

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。