Oauth 2.0 从WSO2身份服务器获取唯一的OAuth令牌API

Oauth 2.0 从WSO2身份服务器获取唯一的OAuth令牌API,oauth-2.0,wso2is,Oauth 2.0,Wso2is,我们的移动客户端应用程序使用https://identityserver:port/oauth2/token 通过将具有grant_类型的ClientID和ClientSecret作为“客户端_凭据”传递以生成访问令牌,从Identity Server提供服务。生成的访问令牌用于从ESB调用API 根据实现,ClientID和ClientSecret将存储在设备中 例如,ClientX请求Oauth令牌,该令牌将有一定的到期时间。此令牌能否成为ClientX的唯一标识 目前,所有即将到来的客户端

我们的移动客户端应用程序使用https://identityserver:port/oauth2/token 通过将具有grant_类型的ClientID和ClientSecret作为“客户端_凭据”传递以生成访问令牌,从Identity Server提供服务。生成的访问令牌用于从ESB调用API

根据实现,ClientID和ClientSecret将存储在设备中

例如,ClientX请求Oauth令牌,该令牌将有一定的到期时间。此令牌能否成为ClientX的唯一标识

目前,所有即将到来的客户端调用都将获得与ClientX请求中已经生成的相同的访问令牌。如果客户机很晚才请求令牌,它将在几乎到期的时间内获得相同的令牌


是否有办法使此令牌对客户端唯一?

在您的情况下,如果使用“客户端凭据”作为授权类型,则资源所有者也是客户端

由于这是一个移动应用程序,一旦您的移动应用程序获得令牌,它将一直使用到到期日,并且无需更改它,因为移动应用程序属于单个用户。因此,在同一范围内,令牌将保持不变,直到过期为止

例如:BBC新闻移动应用程序

如果需要不同的访问令牌,则需要使用不同的作用域

如果不同的客户端访问相同的API,您将需要不同的访问令牌。在这种情况下,您可以对唯一访问令牌使用“密码”授权类型

例:使用易趣购买产品

因此,您应该正确定义您的作用域,以识别访问令牌的使用

找到下面的博客,它将帮助您选择您的范围。[1]


[1]

在您的案例中,如果您使用“客户端凭据”作为授权类型,则资源所有者也是客户端

由于这是一个移动应用程序,一旦您的移动应用程序获得令牌,它将一直使用到到期日,并且无需更改它,因为移动应用程序属于单个用户。因此,在同一范围内,令牌将保持不变,直到过期为止

例如:BBC新闻移动应用程序

如果需要不同的访问令牌,则需要使用不同的作用域

如果不同的客户端访问相同的API,您将需要不同的访问令牌。在这种情况下,您可以对唯一访问令牌使用“密码”授权类型

例:使用易趣购买产品

因此,您应该正确定义您的作用域,以识别访问令牌的使用

找到下面的博客,它将帮助您选择您的范围。[1]


[1]

我将假设移动应用程序实例是按用户绑定的

如果要为绑定到会话的每个用户获取不同的访问令牌,请不要使用客户端\u凭据授权类型

例如,您的client-x和client-y都使用
client\u凭证
grant。Identity Server(授权服务器)将为client-x和client-y提供访问令牌,因为这是关于授权client-x和client-y访问资源,而不是授权用户。这意味着,无论您在client-x或client-y中的任何用户请求访问令牌,他们都可以获得一个(假设他们已通过身份验证)。反之亦然,如果请求来自client-z(client-z未在identity server中注册),则即使客户机和identity server都已通过身份验证,用户也无法获得访问令牌


如果您的Oauth 2.0客户端基于浏览器,则可以使用隐式授权;如果它是服务器,则可以使用授权授权或资源所有者密码凭据。

我将假定移动应用程序实例是按用户绑定的

如果要为绑定到会话的每个用户获取不同的访问令牌,请不要使用客户端\u凭据授权类型

例如,您的client-x和client-y都使用
client\u凭证
grant。Identity Server(授权服务器)将为client-x和client-y提供访问令牌,因为这是关于授权client-x和client-y访问资源,而不是授权用户。这意味着,无论您在client-x或client-y中的任何用户请求访问令牌,他们都可以获得一个(假设他们已通过身份验证)。反之亦然,如果请求来自client-z(client-z未在identity server中注册),则即使客户机和identity server都已通过身份验证,用户也无法获得访问令牌


如果您的Oauth 2.0客户端是基于浏览器的,您可以使用隐式授权,如果它是服务器,您可以使用授权授权或资源所有者密码凭据。

谢谢您的回答,但不明白为什么“客户端凭据”不提供不同的访问令牌?此外,如果存在刷新令牌交换,为什么不可能为同一个移动应用程序使用不同的访问令牌?正如您所解释的,对于不同的客户端,是否有必要使用“密码”作为授权类型?谢谢您的回答,但我不明白为什么要使用“客户端凭据”不提供不同的访问令牌?如果存在刷新令牌交换,为什么不可能为同一个移动应用程序提供不同的访问令牌?正如您所解释的,对于不同的客户端,是否需要使用“密码”作为授权类型?