WSO2 API Manager(和Identity Server)上的令牌验证

时间:2014-08-11 09:27:43

标签: wso2 wso2-am

我们使用wso2 API管理器+单独的身份服务器构建我们的API。

为了实现资源服务器,我们需要

  1. 验证令牌(它有效)
  2. 获取有关用户的信息(角色,用户名,全名等)
  3. 通过OAuth(范围)进行身份验证的详细信息
  4. 用户角色和身份验证范围是确定用户功能和应用安全设置(作为用户角色和授权范围的交集)所必需的。

    目前似乎我可以通过2个请求获得所有必要的信息:

    1. 在SOAP Web服务上调用“验证”方法,该方法位于 / services / OAuth2TokenValidationService / (如果没有专用IS,则为IS或ApiManager)

      响应包含有关令牌有效性,到期数据和用户范围的信息。

    2. / oauth2 / userinfo上进行GET?schema = openid

      响应包含JSON,其中包含有关用户(角色,用户名等)的信息

    3. 第一个请求需要一个带有用户凭据的基本身份验证,在wso2 IS服务器上注册。第二个只需要资源服务器从客户端获取的OAuth令牌。

      所以问题是:这个用例是否需要使用不同技术的2个请求(在资源服务器上获取范围和用户信息)或者我错过了什么?

      第二个请求几乎是好的,但它不包含有关令牌范围的信息,因此如果用户通常可以访问它(根据他的角色),服务器不能限制对资源的访问

      如果需要2个请求,wso2 app的最低系统角色是什么,用户必须访问SoapService?使用管理员凭据(例如默认的admin / admin)对我来说似乎太不安全了,我想用最少的权限创建用户进行令牌验证。

1 个答案:

答案 0 :(得分:0)

  1. 在/ oauth2 / userinfo上执行GET吗?schema = openid 这是一个使用OAuth保护的休息端点,您需要使用访问令牌进行身份验证并获取用户信息。

  2. 在SOAP Web服务上调用“validate”方法,该方法位于/ services / OAuth2TokenValidationService / 此服务是一个管理服务,您可以使用任何允许调用管理服务(如Basic-Auth,Mutual ssl等)的身份验证机制来调用

  3. 在您的方案中,您可以使用相互ssl身份验证器向身份服务器[1]进行身份验证,您可以在此处找到有关该服务器的更多信息。

    除了不调用userinfo端点之外,您还可以配置Identity Server以使用令牌验证响应发送JWT令牌。然后你就可以得到用户了 来自JWT令牌的信息。 [2]在这里您可以找到更多相关信息。

    [1] http://isharaaruna.blogspot.com/2014/01/oauth-20-playground-sample-with-mutual.html

    [2] http://blog.shelan.org/2013/07/how-to-get-user-profile-for-oauth-token.html