uaa 授权_使用UAA引导OAuth2授权服务器

本文介绍了如何使用Cloud Foundry的UAA项目启动本地OAuth2授权服务器,并通过uaac CLI工具填充数据,包括创建客户端和用户,执行授权_code流程。后续文章将展示如何利用这个授权服务器保护资源。
摘要由CSDN通过智能技术生成

uaa 授权

快速获得强大的OAuth2服务器在本地计算机上运行的方法是使用出色的Cloud Foundry UAA项目。 UAA用作Cloud Foundry部署中的基础OAUth2授权服务器,可以大规模扩展,但仍然很小,可以在适度的硬件上启动。

我将在两篇文章中介绍如何使用UAA。 在本文中,我将介绍如何运行本地UAA服务器,并使用OAuth2 Authorization_code流中涉及的一些参与者(客户端和用户)来填充它,在后续文章中,我将展示如何使用此Authorization服务器。使用示例客户端应用程序并确保资源安全。

启动UAA

UAA项目的存储库位于https://github.com/cloudfoundry/uaa

下载项目很简单,只需克隆此仓库即可:

git clone https://github.com/cloudfoundry/uaa

如果您有本地JDK,请使用以下命令启动它:

./gradlew run

此版本的UAA使用内存数据库,因此,在重新启动应用程序时,生成的测试数据将丢失。

填充一些数据

与UAA交互的一种很棒的方式是其随附的名为uaac的CLI应用程序,可从此处获得 。 假设您已经下载了uaac cli,并且UAA在其默认端口8080上启动,那么让我们首先将uaac指向uaa应用程序:

uaac target http://localhost:8080/uaa

并使用罐装客户端凭据之一(admin / adminsecret)登录:

uaac token client get admin -s adminsecret

现在,客户端已登录,可以使用以下方式浏览令牌:

uaac context

这将显示UAA发行的令牌的详细信息,如下所示:

[3]*[http://localhost:8080/uaa]

  [2]*[admin]
      client_id: admin
      access_token: eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkOTliMjg1MC1iZDQ1LTRlOTctODIyZS03NGE2MmUwN2Y0YzUiLCJzdWIiOiJhZG1pbiIsImF1dGhvcml0aWVzIjpbImNsaWVudHMucmVhZCIsImNsaWVudHMuc2VjcmV0IiwiY2xpZW50cy53cml0ZSIsInVhYS5hZG1pbiIsImNsaWVudHMuYWRtaW4iLCJzY2ltLndyaXRlIiwic2NpbS5yZWFkIl0sInNjb3BlIjpbImNsaWVudHMucmVhZCIsImNsaWVudHMuc2VjcmV0IiwiY2xpZW50cy53cml0ZSIsInVhYS5hZG1pbiIsImNsaWVudHMuYWRtaW4iLCJzY2ltLndyaXRlIiwic2NpbS5yZWFkIl0sImNsaWVudF9pZCI6ImFkbWluIiwiY2lkIjoiYWRtaW4iLCJhenAiOiJhZG1pbiIsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJyZXZfc2lnIjoiZTc4YjAyMTMiLCJpYXQiOjE0ODcwMzk3NzYsImV4cCI6MTQ4NzA4Mjk3NiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3VhYS9vYXV0aC90b2tlbiIsInppZCI6InVhYSIsImF1ZCI6WyJhZG1pbiIsImNsaWVudHMiLCJ1YWEiLCJzY2ltIl19.B-RmeIvYttxJOMr_CX1Jsinsr6G_e8dVU-Fv-3Qq1ow
      token_type: bearer
      expires_in: 43199
      scope: clients.read clients.secret clients.write uaa.admin clients.admin scim.write scim.read
      jti: d99b2850-bd45-4e97-822e-74a62e07f4c5

要查看更易读和解码的令牌形式,只需运行:

uaac token decode

应该显示令牌的解码形式:

jti: d99b2850-bd45-4e97-822e-74a62e07f4c5
  sub: admin
  authorities: clients.read clients.secret clients.write uaa.admin clients.admin scim.write scim.read
  scope: clients.read clients.secret clients.write uaa.admin clients.admin scim.write scim.read
  client_id: admin
  cid: admin
  azp: admin
  grant_type: client_credentials
  rev_sig: e78b0213
  iat: 1487039776
  exp: 1487082976
  iss: http://localhost:8080/uaa/oauth/token
  zid: uaa
  aud: admin clients uaa scim

现在,创建一个全新的客户端(称为client1),我将在后续文章中使用它:

uaac client add client1  \
  --name client1 --scope resource.read,resource.write \
  --autoapprove ".*"  \
  -s client1 \
  --authorized_grant_types authorization_code,refresh_token,client_credentials \
  --authorities uaa.resource

该客户端将向用户请求一个resource.read,resource.write范围,并将参与authorization_code授予类型的O​​Auth2流

创建系统的资源所有者或用户:

uaac user add user1 -p user1 --emails user1@user1.com

并为此用户分配一个resource.read范围:

uaac group add resource.read
uaac member add resource.read user1

进行测试流程

现在我们有了一个客户端和一个资源所有者,让我们快速执行一个authorization_code流程,uaac提供了一个方便的命令行选项,该选项提供了必要的重定向挂钩来捕获auth代码并将auth_code转换为访问令牌。

uaac token authcode get -c client1 -s client1 --no-cf

调用上述命令应该会打开一个浏览器窗口,并提示用户输入凭据:

使用先前创建的user1 / user1用户登录时,应在命令行中以一条消息指示已成功获取令牌的方式进行响应,可以使用以下命令再次探索该令牌:

uaac context

输出,显示登录用户的详细信息!:

jti: c8ddfdfc-9317-4f16-b3a9-808efa76684b
  nonce: 43c8d9f7d6264fb347ede40c1b7b44ae
  sub: 7fdd9a7e-5b92-42e7-ae75-839e21b932e1
  scope: resource.read
  client_id: client1
  cid: client1
  azp: client1
  grant_type: authorization_code
  user_id: 7fdd9a7e-5b92-42e7-ae75-839e21b932e1
  origin: uaa
  user_name: user1
  email: user1@user1.com
  auth_time: 1487040497
  rev_sig: c107f5c0
  iat: 1487040497
  exp: 1487083697
  iss: http://localhost:8080/uaa/oauth/token
  zid: uaa
  aud: resource client1

这结束了设置本地UAA并添加OAuth2流中涉及的几个角色(客户端和用户)的旋风之旅。 我还没有介绍OAuth2流程本身,OAuth2的Digital Ocean简介是关于流程的很好的入门。

我将在这篇文章之后发表一篇有关如何使用此基础架构来保护示例资源的文章,并演示使用Spring Security和Spring Boot的流程。

翻译自: https://www.javacodegeeks.com/2017/02/bootstrapping-oauth2-authorization-server-using-uaa.html

uaa 授权

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值