API 认证到 Graphistry 服务器#

graphistry.register() 是用于验证您的 Graphistry 客户端的全局方法。它设置您的 API 凭据,指定要连接的服务器,并配置身份验证设置。在使用服务器进行任何 Graphistry API 调用(例如 .plot())之前,应调用此函数。

在底层,它管理通过Graphistry REST API使用JWT会话令牌。同样,它简化了使用高级可选模式(如SSO)的过程。

基本用法#

要注册,请导入Graphistry并调用graphistry.register()

import graphistry

# Register with default Graphistry Hub using username/password
graphistry.register(api=3, username="my_username", password="my_password")

默认情况下,这将连接到Graphistry Hubhub.graphistry.com),使用https协议,并设置api=3以使用最新的API版本。您可以根据需要覆盖服务器、认证详细信息和其他设置。

核心概念#

个人账户与组织账户#

  • 个人账户:用于个人使用,通常在Graphistry Hub上。

  • 组织账户:通过角色和权限进行管理,通常在企业的上下文中。

user_info = graphistry.user()
print(user_info.get("organization"))  # Returns organization info or None

服务器配置#

  • 默认服务器: 默认情况下,graphistry.register() 连接到 Graphistry Hub,包括用于可视化分析的 免费GPU层

  • 自定义服务器: 如果使用私有部署,请指定server参数以连接到您的自定义服务器。

# Connect to a custom server
graphistry.register(
    api=3,
    server="my_custom_graphistry_server.com",
    username="my_username",
    password="my_password"
)

协议配置#

  • TLS (HTTPS): 通信默认使用https以确保安全通信。

  • 非TLS (HTTP): 如果您的服务器不支持TLS,请将protocol参数设置为“http”

# Use HTTP protocol without TLS
graphistry.register(
    api=3,
    protocol="http",
    server="my_custom_graphistry_server.com",
    username="my_username",
    password="my_password"
)

认证方法#

graphistry.register() 支持多种认证方法:

  1. 用户名和密码:

    graphistry.register(api=3, username="my_username", password="my_password")
    
  2. 个人密钥ID & 密钥(用于脚本或自动化):

    graphistry.register(api=3, personal_key_id="my_key_id", personal_key_secret="my_key_secret")
    
  3. 单点登录 (SSO)(适用于企业用户):

    graphistry.register(api=3, idp_name="my_idp_name", sso_opt_into_type="browser")
    

    SSO认证选项:sso_opt_into_type可以是“browser”“display”None(默认为print)。

路由配置#

  • 服务器路由:默认情况下,服务器API和浏览器UI请求通过同一个服务器进行路由。

  • 自定义浏览器路由:通过client_protocol_hostname覆盖浏览器路由。

# Override browser routing
graphistry.register(
    api=3,
    server="my_api_server.com",
    username="my_username",
    password="my_password",
    client_protocol_hostname="https://my_ui_server.com"
)

高级功能#

JWT 会话处理#

graphistry.register() 在认证后建立一个JWT会话。会话令牌会自动管理,以便用于未来的API调用。

获取当前的JWT令牌#

要检索当前的JWT令牌,您可以在注册后使用以下命令:

# Get the current JWT token
current_token = graphistry.api_token()
print(current_token)

会话期间,令牌会根据需要自动刷新。

详细参数参考#

  • username (Optional[str]): 您的Graphistry账户用户名。

  • password (Optional[str]): 您的Graphistry账户密码。

  • personal_key_id (Optional[str]): 您的个人密钥ID,用于安全访问。

  • personal_key_secret (Optional[str]): 对应的个人密钥。

  • server (Optional[str]): 要连接的Graphistry服务器的URL(例如,hub.graphistry.com 或自定义服务器)。

  • protocol (Optional[str]): 使用的协议(httpshttp),默认为 https

  • api (Optional[int]): 使用的API版本(始终设置为3)。

  • client_protocol_hostname (Optional[str]): 覆盖浏览器的协议/主机名。

  • org_name (Optional[str]): 用于SSO认证的组织名称。

  • idp_name (Optional[str]): 用于单点登录(SSO)的身份提供商(IdP)。

  • sso_opt_into_type (Optional[str]): 如何显示SSO URL(“browser”“display”None)。

示例#

使用用户名和密码注册#

import graphistry

graphistry.register(
    api=3,
    username="my_username",
    password="my_password"
)

使用个人密钥ID和密钥注册#

import graphistry

graphistry.register(
    api=3,
    personal_key_id="my_key_id",
    personal_key_secret="my_key_secret"
)

使用SSO注册(具有特定IdP的组织)#

import graphistry

graphistry.register(
    api=3,
    org_name="my_org_name",
    idp_name="my_idp_name",
    sso_opt_into_type="browser"
)

使用自定义服务器和协议注册#

import graphistry

graphistry.register(
    api=3,
    protocol="http",
    server="my_custom_server.com",
    username="my_username",
    password="my_password"
)

使用自定义浏览器路由注册#

import graphistry

graphistry.register(
    api=3,
    server="my_api_server.com",
    username="my_username",
    password="my_password",
    client_protocol_hostname="https://my_ui_server.com"
)

最佳实践#

  • 安全性:始终使用安全协议(https)并验证证书。

  • 认证: 使用 personal_key_idpersonal_key_secret 进行自动化。

  • 单点登录: 对于组织,确保正确的org_name,如果需要,idp_name

  • 会话管理: 该库自动处理会话令牌;启用内存存储时,请确保安全处理凭据。

故障排除#

  • 连接错误:检查服务器协议参数,并确保您的网络允许访问。

  • 认证失败: 验证凭据。对于SSO,确保org_nameidp_name是正确的。

  • SSL问题:验证服务器证书是否有效,或考虑禁用SSL验证(certificate_validation=False),尽管不推荐这样做。