使用OAuth2 / OpenID Connect进行身份验证和授权

时间:2017-07-26 10:46:34

标签: oauth wso2 authorization wso2is openid-connect

我了解OAuth 2.0规范。允许第三方应用程序代表资源所有者授予对应用程序的有限访问权限,或允许第三方应用程序代表自己获取访问权限。

我有一个场景,我有一个应用程序,我需要用户通过一些IAM提供程序进行身份验证。在授权服务器中为每个用户配置角色和权限。我可以查询授权服务器的内省点,并根据范围详细信息,我的应用程序可以决定用户对任何资源的访问权限。

在这种情况下,用户不是资源所有者。用户可以访问的资源类型由我的应用程序决定,而不是允许/拒绝应用程序访问资源的用户。

由于用户不是资源所有者,因此可以在此方案中使用OAuth / OpenId Connect吗?是否可以使用WSO2 IAM?

我尝试了WSO2中提供的游乐场样本。用户登录后,会出现一个窗口,询问“游乐场请求访问您的个人资料信息”并请求用户允许/拒绝。这可以避免,因为在我的情况下,不允许用户做出任何决定吗?

如果没有,授权/限制资源访问的其他选项是由授权服务器/资源服务器决定的,而不是用户授予访问权限?

谢谢, Albie Morken

1 个答案:

答案 0 :(得分:0)

  

在这种情况下,用户不是资源所有者。用户可以访问的资源类型由我的应用程序决定,而不是允许/拒绝应用程序访问资源的用户。

在您的方案中,您依靠授权服务器颁发的令牌来访问受保护资源。受保护的资源是您的应用程序。此应用程序必须具有内部机制来验证它接收的令牌以授予访问权限。

您的问题的简短回答是 -

您可以在此方案中使用openID connect。你有两种选择,

1。使用具有内省终点的访问令牌

您可以使用访问令牌授予对您的应用程序的访问权限。客户端应将访问令牌作为承载令牌发送,如RFC6750中所述。当应用程序端点收到请求时,可以针对内省端点RFC7662

验证此访问令牌

2. 使用ID令牌

ID令牌也可用作承载令牌.ID令牌是JWT(RFC7519)并且是自包含的。它包含OpenID connect spec所描述的验证机制,这些机制足以允许授权。此外,您还可以检查其中包含的声明以授权最终用户。可以在this链接中找到更多内容。

  

我尝试了WSO2中提供的游乐场样本。一旦用户登录,就会有一个窗口,要求游乐场请求访问您的个人资料信息"并请求用户允许/拒绝。这可以避免,因为在我的情况下,不允许用户做出任何决定吗?

可以禁用同意页面。根据规格。可以通过配置identity.xml来完成,

<SkipUserConsent>true</SkipUserConsent>

它们也在documentation中进行了描述。

希望这会有所帮助。

p.s - WSO2IS包含内置的XACML引擎。 XACML是访问控制的标准。您可以从this链接中获取更多信息。