Oauth 2.0 步骤:WSO2身份验证和授权=多个步骤

Oauth 2.0 步骤:WSO2身份验证和授权=多个步骤,oauth-2.0,wso2,access-token,wso2-am,wso2is,Oauth 2.0,Wso2,Access Token,Wso2 Am,Wso2is,我正在尝试使用WSO2 API管理器为我的API提供安全性。我可以将WSO2 Identity Server配置为使用LDAP服务器和一些用户,并使WSO2 API Manager将此Identity Server用作密钥管理器。我的问题是: 如何配置最终用户以访问API?是否需要将所有用户关联到API Manager中的应用程序角色 最终用户需要有两个访问令牌才能访问API?一个要在中进行身份验证的是使用(OAuth客户端密钥/OAuth客户端密钥),另一个要在API管理器中使用(消费者客户端

我正在尝试使用WSO2 API管理器为我的API提供安全性。我可以将WSO2 Identity Server配置为使用LDAP服务器和一些用户,并使WSO2 API Manager将此Identity Server用作密钥管理器。我的问题是:

  • 如何配置最终用户以访问API?是否需要将所有用户关联到API Manager中的应用程序角色
  • 最终用户需要有两个访问令牌才能访问API?一个要在中进行身份验证的是使用(OAuth客户端密钥/OAuth客户端密钥),另一个要在API管理器中使用(消费者客户端Id/消费者客户端密钥)生成API的访问令牌
  • 是否有任何教程解释所有这些步骤以及如何仅为某些用户保护API

  • 有关使用角色、作用域和令牌保护API的更多信息,请参阅文档中的API安全部分


    包含有关如何在APIM中使用不同授权类型的信息,并符合您的要求。

    以下是我为配置WSO2 Identity Server和WSO2 Api Manager所做的步骤:

  • 我在Identity Server中创建了一个服务提供者,并配置了OAuth/OpenId连接。这将生成OAuth客户机密钥和OAuth客户机密钥

  • 我已经在API管理器中创建了一个身份提供程序,导入一个公共证书来验证来自身份提供程序的响应,并使用OAuth客户端密钥作为别名,以便WSO2 API管理器在验证JWT令牌时进行检查

  • 我在WSO2 API Publisher中创建了一个API,将此API与Interna/subscriber角色关联,并将最终用户与此角色关联

  • 我在WSO2 API Store中创建了一个应用程序来使用我的Rest服务,并将我的API订阅到此应用程序

  • 我按照这篇文章进行了以下步骤:

    问题在于使用Rest服务的步骤。

  • WSO2 Identity Server中生成API Manager访问令牌的请求: curl-u(OAUTH\u CLIENT\u KEY:OAUTH\u CLIENT\u SECRET)-k-d“授权类型=密码&用户名=最终用户\u用户名&密码=最终用户\u密码”-H“内容类型:应用程序/x-www-form-urlencoded”https://localhost:9443/oauth2/token

  • 在API管理器中请求生成API的访问令牌。 curl-i-X POST-u(消费者密钥:消费者秘密)-k-d'grant\u type=urn:ietf:params:oauth:grant type:jwt bearer&assertion=IS\u ACCESS\u TOKEN'-H'内容类型:application/X-www-form-urlencoded'https://localhost:9444/oauth2/token

  • 请求API管理器从API获取资源: curl-v-H“授权:承载AM_访问\u令牌”


  • 有什么简单的方法来完成这些步骤吗?

    基本上,令牌生成流程因授予类型而异。例如,您用于生成访问令牌的jwt承载授权类型有以下几个步骤:

  • 服务提供商向IDP请求JWT
  • 从交换JWT断言的API管理器生成访问令牌
  • 这是因为每种授权类型的使用都不同,使用授权类型取决于您的安全需求

    JWT承载授权通常用于客户端应用程序,在客户端应用程序中,用户登录并提供用户名和密码,其余操作在应用程序本身中完成,而无需与最终用户进行任何交互


    如果您需要作为最终用户生成令牌,可以使用密码授予类型。

    我遵循本教程,但没有解释最终用户将如何调用。我使用两种类型:密码和jwt承载。1) -WSO2中的请求正在使用密码授予类型生成令牌。2) -在WSO2 AM中使用jwt承载类型并使用第一个请求生成的访问令牌进行请求。3) -WSO2 AM中的请求传递由授权标头中的第二个请求生成的访问令牌。我在前面使用了一个React应用程序,所以我想我将链接所有这些调用,以便对用户透明。