springcurityoauth2精讲多场景打造企业级认证与授权_在SpringBo。。。

更新时间:2023-05-21 18:49:56 阅读: 评论:0

springcurityoauth2精讲多场景打造企业级认证与授权_在
SpringBo。。。
解释OAuth2技术跨考
正如我所说,我们将使⽤OAuth2协议,因此⾸先要解释这个协议是如何⼯作的。
OAuth2有⼀些变体,但我将解释我将在程序中使⽤的内容,为此,我将给你⼀个例⼦,以便你了解我们打算做什么。
举个例⼦,在商店⾥⽤信⽤卡付款。在这种场景下,有三个⾓⾊:商店、银⾏和我们。OAuth2协议中也发⽣了类似的事情,就像这样:
1. 客户或买⽅需要银⾏提供信⽤卡。然后,银⾏将收集我们的信息,核实我们是谁,并根据我们帐户中的资⾦向我们提供信⽤卡或者直
委托行接拒绝我们。在授予卡的OAuth2协议中,它称为⾝份验证服务器。
2. 如果银⾏给了我们卡,我们可以去商店,即⽹络服务器,我们提供信⽤卡。商店不⽋我们任何东西,但他们可以通过读卡器向银⾏询
问他们是否可以信任我们以及信⽤余额(信⽤余额)。商店是资源服务器。
3. 商店,根据银⾏说我们拥有的钱,将允许我们购买。在OAuth2类⽐中,Web服务器将允许我们访问页⾯,具体取决于我们的财务状
况。
如果您没有注意到通常使⽤⾝份验证服务器,当您转到⽹页并被要求注册时,它允许您通过Facebook或Google进⾏。Facebook或Google成为发⾏“卡”的“银⾏”,并会验证您的“信⽤”是否⾜够⽀付这个商品。
您可以看到“El Pais”的⽹站并创建⼀个帐户。如果我们使⽤Google或Facebook,这个商店将依赖这些
⾝份验证提供商提供的客户⾝份信息。在这种情况下,⽹站唯⼀需要的是拥有信⽤卡 - ⽆论余额如何
创建授权服务器
现在,让我们看看如何创建银⾏、商店以及您需要的所有其他内容。
⾸先,在我们的项⽬中,我们需要具有适当的依赖关系。我们需要启动者:Cloud OAuth2,Security和Web。
那么,让我们从定义银⾏开始; 这就是我们之前说的: AuthorizationServerConfiguration:
我们从 @ Configuration 标签开始,然后使⽤ @EnableAuthorizationServer 标记告诉Spring激活授权服务器。要定义服务器属性,我们指定我们的类扩展 AuthorizationServerConfigurerAdapter,实现了 AuthorizationServerConfigurerAdapter接⼝,所以Spring将使⽤这个类来参数化服务器。
我们定义了⼀个Spring⾃动提供的AuthenticationManager ,我们将使⽤它来收集@Autowired标签。我们还定义了⼀个 TokenStore对象,作为public的功能 。
profoundly虽然 AuthenticationManager由Spring提供的,但我们必须⾃⼰配置它。我等等解释要如何完成这个配置。TokenStore或者IdentifierStore是⾝份验证服务器提供的标识符将存储的位置,因此当资源服务器(商店)要求信⽤卡上的信息时,⾝份验证服务器就要响应它。在这种情况下,我们使⽤ InMemoryTokenStore将标识符存储在内存中的类。在实际应⽤中,我们可以使⽤JdbcTokenStore将它们保存在数据库中,以便在应⽤程序发⽣故障时,客户端不必更新其信⽤卡。
自考英语(二)在功能配置中 (ClientDetailsServiceConfigurer clients),我们指定银⾏的凭证,包括⾝份验证的管理员,以及提供的服务。因为要访问银⾏,我们必须为每个提供的服务提供⽤户名和密码。这是⼀个⾮常重要的概念:⽤户名和密码来⾃银⾏,⽽不是客户。对于银⾏提供的每项服务,将进⾏单⼀认证,但对于不同的服务可能相同。
cat deeley我将详细说明这些内容:
clients.inMemory ()指定我们将服务存储在内存中。在“真正的”应⽤程序中,我们将其保存在数据库,LDAP服务器等中。
withClient ("client")是我们将在银⾏中识别的⽤户。在这种情况下,它将被称为“客户端”。将他称为“⽤户”会不会更好?curity
要 uthorizedGrantTypes ("password", "authorization_code", "refresh_token", "implicit") ,我们指定配置定义的⽤户,对服务“客户端 ”。在我们的⽰例中,我们将仅使⽤密码服务。
hearstauthorities ("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT", "USER") 指定所提供服务包含的⾓⾊或组。我们也不会在我们的例⼦中使⽤它,所以让我们让它暂时运⾏。
scopes ("read", "write") 是服务的范围 - 我们也不会在我们的应⽤程序中使⽤它。
autoApprove (true)-如果您必须⾃动批准客户的请求,我们会说是,以使应⽤程序更简单。
cret (passwordEncoder (). encode ("password")) 是客户端的密码。请注意,调⽤我们稍后定义的编码函数来指定密码将保存在何种类型的加密中。的编码功能进⾏注释与@Bean标签因为Spring,当我们在HTTP请求中提供密码时,会查找⼀个 PasswordEncoder对象检查交付密码的有效性。
eleanor
最后,我们有⼀个函数 configure (AuthorizationServerEndpointsConfigurer endpoints) ,我们定义哪个⾝份验证控制器和标识符存储应该使⽤端点。澄清终点是我们将与我们的“银⾏”联系以请求卡的URL。
现在,我们已经创建了我们的⾝份验证服务器,但是根据引⼊的凭据,我们仍然需要他知道我们是谁并将我们放在不同的组中的⽅式。好吧,为此,我们将使⽤与保护⽹页相同的类。
现在,我们可以检查我们的授权服务器是否有效。让我们看看如何使⽤优秀的PostMan程序。
我们将使⽤HTTP请求类型POST,表明我们要使⽤基本验证。在我们的⽰例中,我们将分别使⽤“client”和“password”来设置⽤户和密码,即“银⾏”的密码。
在请求正⽂和form-url编码格式中,我们将介绍要请求的服务,⽤户名和密码。
'access_token'“ 8279b6f2-013d-464a-b7da-33fe37ca9afb ”是我们的信⽤卡,是我们必须提供给我们
的资源服务器(商店)以查看⾮公开的页⾯(资源)的信⽤卡。
创建资源服务器(ResourceServer)
现在我们有了信⽤卡,我们将创建接受该卡的商店。尸蜡
在我们的⽰例中,我们将使⽤Spring Boot在相同的程序中创建资源和⾝份验证服务器,它⽆需配置任何内容。如果像现实⽣活中⼀样,资源服务器在⼀个地⽅,⽽⾝份验证服务器在另⼀个地⽅,我们应该向资源服务器指出哪个是我们的“银⾏”以及如何与之交谈。但是,我们将把它留给另⼀个条⽬。analysis复数
资源服务器的唯⼀类是 ResourceServerConfiguration:
由于⾝份验证和资源服务器在同⼀个程序中,我们只需要配置资源服务器的安全性。这是在函数中完成的:
⼀旦我们创建了资源服务器,我们必须只创建服务,这些服务是通过这些⾏完成的:
现在让我们看看验证的⼯作原理。
⾸先,我们检查我们是否可以在没有任何验证的情况下访问“/ publica”:
如果我尝试访问“/ private”页⾯,则会收到错误“401 unauthorized”,表⽰我们⽆权查看该页⾯,因此我们将使⽤我们的授权服务器给⽤户授权。

本文发布于:2023-05-21 18:49:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/117406.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   验证   服务   资源   密码   提供   需要   商店
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图