从 WSO2 身份服务器获取唯一的 OAuth 令牌 API
Get a Unique OAuth token API from the WSO2 Identity Server
我们的移动客户端应用程序使用身份服务器的 https://identityserver:port/oauth2/token 服务,通过将 ClientID 和 ClientSecret 与 grant_type 作为“client_credentials”传递来生成访问令牌.生成的访问令牌用于从 ESB 调用 API。
根据实施,ClientID 和 ClientSecret 将存储在设备中。
例如,ClientX 请求了一个 Oauth 令牌,该令牌有一定的到期时间。此令牌可以作为 ClientX 的唯一令牌吗?
目前所有即将到来的客户端调用都将获得相同的访问令牌,因为它已经从 ClientX 的请求中生成。如果客户端很晚才请求令牌,它将获得几乎到期时间相同的令牌。
有没有办法让这个令牌对客户来说是唯一的?
在您的情况下,如果您使用“client_credentials”作为授权类型,则资源所有者也是客户。
由于这是一个移动应用程序,一旦您的移动应用程序获得令牌,它将一直使用到到期日期,并且没有必要更改它,因为移动设备属于单个用户。因此,在过期之前,令牌在相同范围内是相同的。
例如:BBC 新闻移动应用程序。
如果您需要不同的访问令牌,则需要使用不同的范围。
如果不同的客户端访问同一个 API,您将需要不同的访问令牌。在这种情况下,您可以使用“密码”授权类型作为唯一访问令牌。
示例:使用 ebay 购买产品。
因此您应该正确定义范围以识别访问令牌的使用。
查找以下博客,它们将帮助您指导 select 您的范围。 [1]
我假设移动应用程序实例是按用户绑定的。
如果您想为每个绑定到会话的用户获得不同的访问令牌,请不要使用 client_credential 授权类型。
例如,您有 client-x 和 client-y 都使用 client_credentials
grant。身份服务器(授权服务器)将为 client-x 和 client-y 提供访问令牌 因为这是关于 授权 client-x 和 client-y 访问资源和而不是授权用户。这意味着您在 client-x 或 client-y 中请求 access_token 的任何用户都可以获得一个(假设他们已通过身份验证)。反之亦然,即使已通过身份验证,客户端和身份服务器也无法获得访问权限如果请求来自 client-z(client-z 未在身份服务器中注册)
如果您的 Oauth 2.0 客户端是基于浏览器的,您可以使用 implicit grant,如果它是服务器,您可以使用 authorization grant 或 资源所有者密码凭据。
我们的移动客户端应用程序使用身份服务器的 https://identityserver:port/oauth2/token 服务,通过将 ClientID 和 ClientSecret 与 grant_type 作为“client_credentials”传递来生成访问令牌.生成的访问令牌用于从 ESB 调用 API。
根据实施,ClientID 和 ClientSecret 将存储在设备中。
例如,ClientX 请求了一个 Oauth 令牌,该令牌有一定的到期时间。此令牌可以作为 ClientX 的唯一令牌吗?
目前所有即将到来的客户端调用都将获得相同的访问令牌,因为它已经从 ClientX 的请求中生成。如果客户端很晚才请求令牌,它将获得几乎到期时间相同的令牌。
有没有办法让这个令牌对客户来说是唯一的?
在您的情况下,如果您使用“client_credentials”作为授权类型,则资源所有者也是客户。
由于这是一个移动应用程序,一旦您的移动应用程序获得令牌,它将一直使用到到期日期,并且没有必要更改它,因为移动设备属于单个用户。因此,在过期之前,令牌在相同范围内是相同的。
例如:BBC 新闻移动应用程序。
如果您需要不同的访问令牌,则需要使用不同的范围。
如果不同的客户端访问同一个 API,您将需要不同的访问令牌。在这种情况下,您可以使用“密码”授权类型作为唯一访问令牌。
示例:使用 ebay 购买产品。
因此您应该正确定义范围以识别访问令牌的使用。
查找以下博客,它们将帮助您指导 select 您的范围。 [1]
我假设移动应用程序实例是按用户绑定的。
如果您想为每个绑定到会话的用户获得不同的访问令牌,请不要使用 client_credential 授权类型。
例如,您有 client-x 和 client-y 都使用 client_credentials
grant。身份服务器(授权服务器)将为 client-x 和 client-y 提供访问令牌 因为这是关于 授权 client-x 和 client-y 访问资源和而不是授权用户。这意味着您在 client-x 或 client-y 中请求 access_token 的任何用户都可以获得一个(假设他们已通过身份验证)。反之亦然,即使已通过身份验证,客户端和身份服务器也无法获得访问权限如果请求来自 client-z(client-z 未在身份服务器中注册)
如果您的 Oauth 2.0 客户端是基于浏览器的,您可以使用 implicit grant,如果它是服务器,您可以使用 authorization grant 或 资源所有者密码凭据。