Spring Security不仅是一个功能强大且可高度自定义的身份验证和访问控制框架,它还是保护基于Spring的应用程序的实际标准。...Open ID Connect流涉及以下步骤: 发现OIDC元数据 执行OAuth流以获取ID令牌和访问令牌 获取JWT签名密钥,并可以选择动态注册客户端应用程序 根据内置日期和签名在本地验证...JWT ID令牌 根据需要使用访问令牌获取其他用户属性 创建一个Spring Boot应用 在浏览器中打开start.spring.io 。...您会看到一个链接,单击该链接可以使用Okta登录。 注意:如果您想学习如何自定义Spring Security显示的登录屏幕,请参阅其OAuth 2.0登录页面文档 。...这段代码添加了一个/userinfo映射,该映射使用Spring WebFlux的WebClient从用户信息端点获取用户信息。
在本文中,我将向您展示如何使用Okta和Spring Boot通过两个客户端应用程序和一个资源服务器来实现单点登录。...我还将讨论如何使用访问策略来强制执行身份验证和授权策略,以及如何基于应用程序范围来限制对资源服务器的访问。在进入代码之前,您需要适当的用户身份验证配置。...创建授权服务器Okta的最后一步是创建和配置授权服务器。这使您可以配置自定义声明并设置自定义访问策略。这确定Okta是否在请求令牌时发出令牌,该令牌控制用户访问客户端应用程序和资源服务器的能力。...该getWelcomeMessage方法返回一条欢迎消息,其中包含用户的全名。该getUserEmail方法将返回用户的电子邮件。这两个数据都是从您之前在Okta控制台中设置的令牌声明中提取的。...它导入所需的Okta和Spring依赖项,然后仅定义可以在给定某些参数的情况下启动的客户端应用程序。该应用程序的完整代码在SingleSignOnApplication类中。
如果您想深入挖掘,请查看JWT规范或深入了解有关在Spring Boot应用程序中使用JWT进行令牌身份验证的更长篇文章。 什么是JWT?...JSON Web令牌是用于以紧凑和安全的方式在各方之间发送信息的JSON对象。JSON规范或Javascript Object Notation定义了一种使用键值对创建纯文本对象的方法。...服务器可以使用JWT告诉客户端应用程序允许用户执行哪些操作(或允许他们访问哪些数据)。 JWT通常还用于存储Web会话的依赖于状态的用户数据。...标题包含有关如何编码JWT的信息。身体是令牌的肉(声称存在的地方)。签名提供安全性。 关于如何编码令牌以及如何将信息存储在正文中,我们将不会详细介绍这些细节。如果需要,请查看前面提到的教程。...此外,以下是来自Okta博客的更多链接,以便您继续: Java应用程序的简单令牌认证 开始使用Spring Boot,OAuth 2.0和Okta 10种保护Spring Boot应用程序的绝佳方法 如果您的
下面,我们将深入探讨一些可用的流程以及何时适合使用它们。 从端点返回一个代码/authorization,可以使用端点交换 ID 和访问令牌/token。...下面是这个流程如何使用 Okta 开始的示例: https://micah.okta.com/oauth2/aus2yrcz7aMrmDAKZ1t7/v1/authorize?...id_token 隐式流程 本质上,访问和 ID 令牌是直接从/authorization端点返回的。端点/token未使用。...下面是这个流程如何使用 Okta 开始的示例: https://micah.okta.com/oauth2/aus2yrcz7aMrmDAKZ1t7/v1/authorize?...当您希望最终用户应用程序能够立即访问短期令牌(例如身份信息)id_token,并且还希望使用后端服务使用刷新将授权代码交换为长期令牌时,这是一种合适的方法令牌。 它是授权代码和隐式代码流的组合。
另一个是来自端点的响应/userinfo,可以使用access_token作为不记名令牌访问。 请求中有很多查询参数的组合/authorization,它们决定了哪些信息将被编码到id_token....OIDC 规范中不需要访问令牌的特定格式,我们使用 JWT。...如果我们想要获取用户的身份信息,我们必须使用作为不记名令牌的/userinfo端点。...范围定义的声明的完整列表,但它是我在 Okta 中的用户具有值的所有声明。...自定义范围和声明 OIDC 规范适应自定义范围和声明。在令牌中包含自定义声明的能力(可通过密码验证)是身份提供者的一项重要功能。Okta 的实现为此提供了支持。
从 Cloud Shell 创建一个简单的 Spring Boot 应用程序: jx create spring -d web -d actuator 此命令使用 Spring Initializr,因此系统会提示你进行一些选择...你可以手动改进从演示到生产使用: jx promote okta-spring-jx-example --version 0.0.1 --env production 你可以使用 jx edit environment...既然你已经知道如何使用 Jenkins X 和一个简单的 Spring Boot 应用程序,让我们来看看如何通过一个更实际的示例使其工作。...使用 Okta 保护你的加密货币财富跟踪 PWA 使用 Okta(而不是本地存储)安全地存储用户的数据 使用 WireMock、Jest、Protractor 和 Travis CI 测试 Spring...要使用 Okta 进行此操作,你可以创建一个 Java 类,该类与 Okta API 进行交互。创建 holdings-api/src/test/java/...
它使用scope来定义授权用户可以执行的操作的权限。但是,OAuth 2.0不是身份验证协议,并且不提供有关经过身份验证的用户的信息。...OpenID Connect(OIDC)是一个OAuth 2.0扩展,提供用户信息,除了访问令牌之外,它还添加了ID令牌,以及/userinfo可以从中获取其他信息的端点,它还添加了发现功能和动态客户端注册的端点...要了解如何在Spring Boot应用程序中使用OIDC,请参阅Spring Security 5.0和OIDC入门。...8.安全地存储秘密 应谨慎处理敏感信息,如密码,访问令牌等,你不能以纯文本形式传递,或者如果将它们保存在本地存储中。...以下代码段显示了使用注释从Spring Vault中提取密码的方便程度。
它支持访问令牌,但未指定这些令牌的格式。使用 OIDC,定义了许多特定的范围名称,每个名称都会产生不同的结果。OIDC 同时具有访问令牌和 ID 令牌。...通常,您需要使用/tokenHTTP POST 访问端点以获取用于进一步交互的令牌。 OIDC 还有一个/introspect用于验证令牌的端点,一个/userinfo用于获取用户身份信息的端点。...以上所有端点都是惯例,但可以由 OP 定义为任何内容。OIDC 的一项重大改进是元数据机制,用于从提供者处发现端点。 什么是范围? 范围是以空格分隔的标识符列表,用于指定请求的访问权限。...考虑因素包括应用程序的类型(如基于 Web 或本机移动应用程序)、您希望如何验证令牌(在应用程序中或在后端)以及您希望如何访问其他身份信息(进行另一个 API 调用或拥有它直接编码成令牌)。...这是一个典型的场景: 用户登录并取回访问令牌和刷新令牌 应用程序检测到访问令牌已过期 应用程序使用刷新令牌获取新的访问令牌 重复 2 和 3,直到刷新令牌过期 刷新令牌过期后,用户必须重新进行身份验证
Let 's Encrypt保护的Spring引导是关于如何做到这一点的有用指南。...如果您使用Spring MVC的标记或Thymeleaf和@EnableWebSecurity, CSRF令牌将自动添加为一个隐藏的输入字段。...它使用范围来定义授权用户可以执行哪些操作的权限。但是,OAuth 2.0不是一个身份验证协议,它不提供关于经过身份验证的用户的任何信息。...OpenID Connect (OIDC)是一个提供用户信息的OAuth 2.0扩展。除了访问令牌之外,它还添加了ID令牌,以及/userinfo端点,您可以从该端点获得附加信息。...要了解如何在Spring引导应用程序中使用OIDC,请参阅Spring Security 5.0和OIDC入门。要总结如何使用它,您需要向项目添加一些依赖项,然后在应用程序中配置一些属性。
Spring Security 5.1 支持自定义 OAuth2 授权和令牌请求。 在本教程,我们将了解人如何自定义请求参数和相应处理。 2....让我们通过为 Okta 授权服务自定义授权请求来查看更实际的示例。 4.1. 自定义 Okta 授权请求 Okta 为授权请求提供了额外的可选参数,以便为用户提供更多功能。...自定义令牌请求 现在,我们将了解如何自定义 OAuth2 令牌请求。 我们可以通过自定义 OAuth2AccessTokenResponseClient 自定义令牌请求。...令牌请求额外参数 现在,我们将看到如何通过构建自定义 Converter 来添加额外的参数到我们的令牌请求: public class CustomRequestEntityConverter implements...在此示例中,我们将“scope”参数解析为逗号分割而不是空格风格的 String。 让我们查看另一个通过使用 LinkedIn 作为授权服务器自定义令牌响应的示例。 7.1.
它使用scope来定义授权用户可以执行的操作的权限。但是,OAuth 2.0不是身份验证协议,并且不提供有关经过身份验证的用户的信息。...OpenID Connect(OIDC)是一个OAuth 2.0扩展,提供用户信息,除了访问令牌之外,它还添加了ID令牌,以及/userinfo可以从中获取其他信息的端点,它还添加了发现功能和动态客户端注册的端点...你可以使用像Keycloak这样的开源系统来设置自己的OIDC服务器。如果你不想在生产中维护自己的服务器,可以使用Okta的Developer API。 7....安全地存储秘密 应谨慎处理敏感信息,如密码,访问令牌等,你不能以纯文本形式传递,或者如果将它们保存在本地存储中。...以下代码段显示了使用注释从Spring Vault中提取密码的方便程度。 9. 使用OWASP的ZAP测试您的应用程序 OWASP ZAP安全工具是针对在运行活动的应用程序进行渗透测试的代理。
我将在下面显示如何加密密钥。 你可能还想强制使用HTTPS。你可以在我以前的博客文章“ 保护Spring Boot应用程序的10种出色方法”中看到如何做。...要了解基于Spring的微服务如何使用HTTPS,请参阅使用HTTPS和OAuth 2.0保护Spring微服务。...它们共同提供了一个标准规范,你可以据此编写代码,并可以在 IdPs (Identity Providers) 中使用。 该规范,还允许你通过向/userinfo端点发送访问令牌来查找用户的身份。...这种方法的优点: 服务可以使用访问令牌与任何其他内部服务进行对话(因为它们都是连接到同一个授权服务器) 有了一个可以查找所有范围和权限定义的地方 开发人员和安全人员更易于管理 交互更快 缺点: 如果一项服务的令牌遭到破坏...通过设计确保安全 扫描依存关系 使用HTTPS 使用访问令牌 加密和保护密钥 它们的其余部分似乎适用于DevOps人员,或更确切地说适用于DevSecOps。
,特定场景需要直连授权服务器的Web应用、移动应用都属于这一类。...❝Q:非OAuth2客户端的客户端应用既然不能直接持有access_token和refresh_token的话,应该如何获取授权状态?...A:OAuth2本身并没有定义用户如何向OAuth2客户端认证身份,这里要和授权服务器上的用户认证区别开来。...从用户(资源所有者)角度来说,存放用户可以授权的资源接口的服务器都可以是资源服务器。资源服务器可以对访问令牌access_token进行解码、校验,并确定本次请求是否合规。...❝Q:微服务是否可以不使用OAuth2? A:当然是可以的,OAuth2只不过是目前微服务访问控制的解决方案之一,并不是唯一选项。 总结 这就是最近胖哥被提问得比较频繁的一些问题,相信能够帮助各位。
隐式授权类型是单页 JavaScript 应用程序无需中间代码交换步骤即可获取访问令牌的一种方式。它最初是为 JavaScript 应用程序(无法安全存储机密)而创建的,但仅在特定情况下才推荐使用。...在 OAuth 2.0 中,术语“授权类型”是指应用程序获取访问令牌的方式。OAuth 2.0 定义了几种授权类型,包括授权代码流。OAuth 2.0 扩展还可以定义新的授权类型。...通过这样做,服务器确保应用程序能够从 URL 访问该值,但浏览器不会将 HTTP 请求中的访问令牌发送回服务器。 状态值将与应用程序最初在请求中设置的值相同。...积极的一面是,Okta JavaScript SDK 通过本质上提供“心跳”来让您的访问令牌保持活动状态,从而无缝地处理这个问题。...相比之下,当应用程序使用授权代码授权来获取 时id_token,令牌将通过安全的 HTTPS 连接发送,即使令牌签名未经过验证,该连接也能提供基准级别的安全性。
B2C 服务包含一个加密缺陷,允许攻击者使用任何用户帐户的内容制作 OAuth 刷新令牌。...攻击者可以将此刷新令牌兑换为会话令牌,从而获得对受害者帐户的访问权限,就好像攻击者已通过合法登录流程登录一样。...本期推荐的云安全类开源工具适用于SaaS、PaaS、IaaS等各类云服务模式。...https://cloudsec.tencent.com/article/2lEBd1 5 攻击者从Okta的GitHub存储库中窃取源代码 本月初,微软旗下的GitHub向Okta发出警告,称其代码库存在...https://cloudsec.tencent.com/article/82mXu 8 2022年公有云安全现状调查:“皇冠上的宝石”仍然触手可及 经调查发现,在云上攻击中,78%的已识别攻击使用了已知漏洞作为初始访问攻击向量
本文来源:https://gitee.com/api/v5/oauth_doc#/ 引言 笔者看了大半天的spring-security开发文档中关于使用oauth2 协议中的授权码模式对第三方应用授权客户端的登录认证部分...,发现目前只提供配置四种 OAuth2 认证服务器: google 的 oauth2 认证服务器 github 的 oauth2 认证服务器 facebook 的 oauth2 认证服务器 自定义 oauth2...认证服务器的 okta 其中 google、github、facebook 和 okta 会在自动配置类中被设置成 ClientRegistration 实例中的 registrationId 字段。...前三种方式在 CommonOAuth2Provid 类中自动配置了开启auth2 授权认证所需要的ClientRegistration 实例中的 authorizationUri、tokenUri和userInfoUri...详见:获取Token时服务端响应状态403是什么情况 2. 密码模式 (1) 用户向客户端提供邮箱地址和密码。客户端将邮箱地址和密码发给码云认证服务器,并向码云认证服务器请求令牌。( POST请求。
版本 spring boot 3.2.1 spring seciruty 6.2.1 配置 OAuth2 客户端配置文件 application.yml spring: security:...: # issuer-uri: http://localhost:8081 自动从授权服务器获取元数据 authorization-uri: http:/.../localhost:8081/oauth2/authorize # 授权端点 token-uri: http://localhost:8081/oauth2/token # 令牌获取端点...sub声明字段保存用户名,如果自定义用户信息结构则需要改为对应声明字段名) 注: 如果授权服务器开放了元数据端点,可通过配置issuer-uri,自动通过授权服务器获取元数据,无需配置provider中的各端点...configuredProviderId : registrationId; // 获取通用provider(GOOGLE,GITHUB,FACEBOOK,OKTA) CommonOAuth2Provider
就是继承了此抽象类,完成了从DAO方式获取验证需要的用户信息的。...安全配置类 下面这个配置类是Spring Security的关键配置。 在这个配置类中,我们主要做了以下几个配置: 1. 访问路径URL的授权策略,如登录、Swagger访问免登录认证等 2....,最终返回认证成功的 Authentication 实现类并存储到SpringContexHolder 上下文即可,这样后面授权的时候就可以从 SpringContexHolder 中获取登录认证信息,...将认证成功的认证信息存储到上下文,供后续访问授权的时候获取使用 3....展示如何自定义,具体的大家可以根据各自的需求按需定制。
领取专属 10元无门槛券
手把手带您无忧上云