首页 文章

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

提问于
浏览
1

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

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

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

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

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

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

谢谢,Albie Morken

1 回答

  • 0

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

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

    你的问题的简短回答是 - YES

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

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

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

    2. 使用ID令牌

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

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

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

    <SkipUserConsent>true</SkipUserConsent>
    

    它的documentation也有描述 .

    希望这有帮助 .

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

相关问题