MENU
    OAuth2.0 配置和技术细节
    • 23 Jan 2025
    • 1 分钟阅读
    • 贡献者

    OAuth2.0 配置和技术细节


    文章摘要

    在本文中,我们将深入探讨 Tulip 如何为连接器身份验证实现 OAuth 的技术细节。OAuth 功能强大,但也增加了一些复杂性。本指南旨在解决与 Tulip 支持的内容及其集成方式有关的任何技术问题。

    注意:客户端凭证流程与授权代码流程有一些不同。步骤 1 和 2 与客户证书流程无关。

    Tulip 授权代码流程

    On-Prem Services

    The Authorize and Token endpoints must be accessible to the cloud for Tulip to execute authentication for connectors

    当测试连接器或在应用程序中运行连接器功能时,Tulip 会启动身份验证流程。

    1.重定向到授权服务器:

    Tulip 应用程序将用户连同特定参数重定向到授权服务器(AS),这些参数包括 response_type(为授权代码流设置为 "code")、client_id(在连接器用户界面中分配)、redirect_uri(Tulip 预定义)、scope 和 audience(在用户界面中设置)以及 state(随机字符串,用于防止跨站请求伪造攻击)。

    示例:GET /authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=SCOPE&audience=AUDIENCE&state=STATE

    2.用户同意:

    授权服务器会对用户进行身份验证,并向其显示同意屏幕。用户可查看请求的权限,并决定是否允许访问第三方应用程序。

    (警告)(注)在给定连接器的配置中,"跳过用户同意提示 "控件允许您控制授权请求的提示属性。禁用该控件时,将使用 "同意 "值,启用时将使用 "登录 "值。

    如果需要提示属性的其他值,请联系 support@tulip.co,我们将为该属性启用更多选项。
    :::

    3.授权代码:

    如果用户同意,授权服务器将生成一个授权代码,并将用户连同授权代码一起重定向回 Tulip。状态参数也包括在内,允许客户端验证响应的完整性。该状态参数必须与步骤 1 中传递的状态参数相匹配。

    重定向到客户端重定向 URI 的示例:

    REDIRECT_URI?code=AUTHORIZATION_CODE&state=STATE 4.

    4.令牌请求:

    客户端现在有了授权代码,并用它向授权服务器的令牌端点发出服务器到服务器的安全请求。客户端包括 grant_type(设置为 "authorization_code")、client_id、client_secret(只有客户端和授权服务器知道的秘密)、redirect_uri 和授权代码。

    令牌请求示例

    POST /tokenContent-Type: application/x-www-form-urlencoded

    grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET````.

    5.访问令牌响应:

    如果授权码有效,授权服务器将回复一个访问令牌和一个刷新令牌。客户端在代表用户向受保护的 API 发出请求时,会使用访问令牌对自己进行身份验证。

    令牌响应示例

    { "access_token":"ACCESS_TOKEN", "token_type":"Bearer", "expires_in":3600, "refresh_token":"REFRESH_TOKEN", "scope":"SCOPE"}

    Services Not Using expires_in

    6.访问资源服务器:

    Tulip 现在可以使用获得的访问令牌代表用户向资源服务器(API)发出授权请求。访问令牌通常包含在 HTTP 请求的授权头中。

    示例 API 请求:GET /api/resourceAuthorization:Bearer ACCESS_TOKEN

    使用刷新令牌管理令牌有效期

    授权服务器通常会为令牌设置过期日期,以规范访问权限,过期窗口因接口系统而异。然而,由于持续的用户身份验证会破坏 Tulip 应用程序的用户体验,因此短效令牌带来了挑战。

    为了解决这个问题,OAuth 支持刷新令牌。虽然刷新令牌是可选的,但我们强烈建议使用它们,因为它们允许 Tulip 无缝刷新令牌,无需操作员手动输入,从而简化了用户体验。

    Tulip 如何管理令牌刷新

    当 Tulip 检测到访问令牌已过期时,它会自动尝试使用相关的刷新令牌来获取新令牌。其主要目的是尽量减少用户的重新认证。以下步骤概述了 Tulip 执行的逻辑:

    Token Refresh Flow

    1. 过期检测:
    2. Tulip 根据认证流程步骤 5中收到的expires_in属性识别过期令牌。
    Services Not Using expires_in
    1. 令牌流尝试:

    2. Tulip 使用refresh_token授权类型启动令牌流,替换初始身份验证流中使用的授权类型。

    3. 令牌验证:

    4. 如果获得新令牌,Tulip 会将其存储起来,并继续执行用户请求的连接器功能。

      • 如果成功,数据将提供给 Tulip 应用程序运行时。
      • 如果新令牌因 OAuth 错误而失败,Tulip 会重试该过程最多 5 次,每次都会返回到步骤 1。
      • 如果新令牌因任何其他错误而失败,播放器运行时将显示错误。
    5. 处理令牌缺失:

    6. 如果没有提供新的令牌,Tulip 会提示播放器中的用户进行身份验证,启动整个身份验证过程。

    7. 完成后,将执行连接器函数并返回数据。

    通过实施刷新令牌,Tulip 可智能管理令牌到期和更新,最大限度地减少工作流程中断,从而确保更流畅的用户体验。

    更多阅读


    本文对您有帮助吗?