云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

CDN_mysql数据库登录_限时特惠

小七 141 0

弹簧套用oauth2.0保护springbootapi和spa了解如何使用oauth2.0保护springbootapi和spa。

DR:在本文中,您将学习如何使用oauth2.0创建和保护jqueryspa和springbootapi。您将从搭建一个新的springboot项目开始。然后您将向其添加一些端点。之后,您将使用springsecurity来保护整个系统。最后,您将创建一个SPA(使用jQuery)来使用API。如果需要,您可以在GitHub存储库中找到本文中开发的参考代码。"了解如何使用OAuth 2.0保护Spring Boot API和SPA。"在推特上留言先决条件要继续阅读本文,您需要在本地计算机上安装以下软件:jdk8或jdk10(本文是用jdk10测试的)。任何您选择的javaide(例如IntelliJ、Eclipse或Netbeans)。什么是OAuth 2.0?没有什么比官方规范本身更能告诉您OAuth 2.0是什么:OAuth 2.0是一个授权框架,它允许第三方应用程序代表资源所有者(通常是用户)或通过允许第三方应用程序以自己的名义获得对HTTP服务的有限访问。-OAuth 2.0授权框架换言之,此协议允许用户在一个应用程序(web应用程序、移动应用程序等)上向另一个应用程序授予对其数据的有限访问权限,而无需公开其凭据。如果您对OAuth 2.0了解不多,并且想了解更多信息,请务必查看此资源。OAuth 2.0和单页应用程序:使用隐式授权由于您要开发一个由单页应用程序(SPA)组成的演示应用程序,该应用程序使用由oauth2.0保护的springbootapi中的资源,因此您必须实现oauth2.0隐式授权。隐式授权是专门为想要使用api的公共spa客户端定制的oauth2.0流。如果您正在开发不同类型的客户端(例如,移动应用程序),则必须选择另一种流。要了解有关不同流的更多信息以及如何实现每个流,请看一看此资源。用OAuth 2.0保护springbootapi用一个新的OAuth.0来创建一个新的API。但是,在深入研究代码之前,您需要一个实现OAuth 2.0协议的身份提供程序。对于这个演示应用程序,您将使用Auth0,为此,您需要在这里注册一个免费的Auth0帐户。注册Auth0帐户后,您需要在Auth0上创建一个API来表示后端API,并能够将其配置为对请求进行身份验证。为此,请转到Auth0仪表板上的API部分,然后单击createapi按钮。之后,仪表板将显示一个窗体,您必须在其中输入:API的名称(可以类似于"springboot隐式流");标识符(在本例中,它可以是:8080/api或类似于有效URL的任何内容);以及签名算法(对于该字段,请确保选择RS256)。然后,您可以通过单击create按钮来创建auth0api。单击此按钮后,仪表板会将您重定向到一个部分,您将在其中找到有关如何配置后端的说明。由于本文将讨论与配置相关的所有内容,因此您可以忽略此部分并转到Scopes部分。在那里,您将注册OAuth作用域:姓名:阅读:消息Description:"读取消息"在表单中插入上述值后,点击Add按钮将这个新范围保存到auth0api中。这样,配置就完成了,可以开始使用后端API了。搭建你的SpringBootAPI在本节中,您将创建一个新的springboot应用程序,作为您的API。此API将公开公共和私有端点。对于初学者,请转到Spring initializer页面,并按如下方式填写表单:生成a:Gradle项目使用:Java和弹簧靴:2.0.x组别:com.示例工件:spring-boot-oauth2然后,在依赖项部分,您将必须使用搜索框来包含两个库:Web和Security。填写完表单后,单击GenerateProject按钮下载新的应用程序。当浏览器完成下载后,提取下载文件的内容,并将项目导入到首选的IDE中。正如您在IDE中看到的,目前,您的项目只包含一个名为SpringBootOauthApplication的类。如果你打开生成.gradle文件中,您还将看到您的项目定义了四个依赖项:springbootstartersecurity、springbootstarterweb、springbootstartertest和springsecuritytest。如果使用Java 10,则必须更新此文件以包含处理Java到XML编组的库:// ... 别碰其他东西。。。依赖关系{// ... 其他依赖项。。。编译('org.glassfish.jaxb网站:jaxb公司-运行时间:2.3.1')}在springboot上定义端点在搭建springboot项目之后,您可以集中精力创建它的第一个端点。为此,您将创建一个新类,该类将定义以下端点:/api/public:此端点将是可公开访问的,并将返回一条简单的文本消息。/api/private:只有经过身份验证的用户才能访问此端点。/api/私有作用域:只有经过身份验证并授予特定范围的用户才能访问此终结点。/配置:此端点将是可公开访问的,并将返回一些配置属性,SPA将使用这些属性对用户进行身份验证。因此,要定义这些端点,请在com.example.springbootoauth2打包并在其中插入以下代码:包裹com.example.springbootoauth2;进口org.json.json对象;进口org.springframework.beans.factory.annotation.Value;进口org.springframework.web.bind.annotation.RequestMapping;进口org.springframework.web.bind.annotation.RequestMethod;进口org.springframework.web.bind.annotation.ResponseBody;进口org.springframework.web.bind.annotation.RestController;@rest控制器公共类AppController{@值("${安全.oauth2.资源.id}")私有字符串resourceId;@值(${auth0.domain})私有字符串域;@值(${auth0.clientId})私有字符串clientId;@请求映射(value="/api/public",方法=请求方法.GET,产生="application/json")@回应书公共字符串publicEndpoint(){返回新的JSONObject().put("消息","来自公共终结点的你好!"!您不需要经过身份验证才能看到此内容。").toString();}@请求映射(value="/api/private",方法=请求方法.GET,产生="application/json")@回应书公共字符串privateEndpoint(){返回新的JSONObject().put("消息","来自私有终结点的你好!"!您需要经过身份验证才能看到此内容。").toString();}@请求映射(value="/api/private scoped",方法=请求方法.GET,产生="application/json")@回应书公共字符串privateScopedEndpoint(){返回新的JSONObject().put("消息","来自私有终结点的你好!"!您需要经过身份验证并具有阅读:邮件收件人看看这个。").toString();}@请求映射(value="/config",方法=请求方法.GET,产生="application/json")@回应书公共字符串getAppConfigs(){返回新的JSONObject().put("域",域).put("客户端ID",客户端ID).put("听众",resourceId).toString();}}插入这段代码之后,您的IDE可能会开始对您大喊大叫,因为它不知道在哪里可以找到org.json.json对象班级。若要解决此问题,请将以下依赖项添加到生成.gradle文件:// ... 别碰其他东西。。。依赖关系{// ... 其他依赖项。。。编译('org.json文件:json:20180813')}有了它,下一步需要做的就是定义AppController类使用的环境变量。也就是说,如果仔细观察这个类,就会发现它包含三个用@Value注释的字符串字段:resourceId:这将引用您的auth0api标识符(例如。,:8080/api)。域:这将引用您的Auth0域(例如,blog-samples.auth0.com)clientId:这将引用您仍然需要创建的Auth0应用程序的客户机ID。要定义这些环境变量,请打开应用程序.属性归档并添加以下内容:auth0.domain=auth0.clientId=安全.oauth2.资源.id=验证标识符只需确保用自己的AUTH0值替换和。现在不要担心占位符,稍后会替换它。用OAuth 2.0保护springbootapi现在已经定义了端点,现在是时候使用OAuth 2.0保护API了。为此,您将导入Spring提供的另一个库,它将有助于配置所有内容。所以,打开渐变。构建文件并添加以下依赖项:// ... 别碰其他东西。。。依赖关系{// ... 其他依赖项。。。编译('org.springframework.security.oauth.启动:spring-security-oauth2-auto配置:2.0.6.RELEASE')}然后,为了保护API,在com.example.springbootoauth2打包并添加以下代码:包裹com.example.springbootoauth2;进口org.springframework.beans.factory.annotation.Value;进口org.springframework.context.注释.配置;进口org.springframework.security.web注释.config.建筑商.HttpSecurity;进口org.springframework.security.oauth2。config.annotation.web.configuration.EnableResourceServer;进口org.springframework.security.oauth2。config.annotation.web.配置