You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Ory Hydra 2.0与Kratos集成配置示例,实现Kratos作为身份提供商

Ory Hydra 2.0 与 Kratos 集成配置示例

Ory Hydra 2.0 正式支持与 Ory Kratos 集成,仅需少量配置即可让 Kratos 作为 Hydra 的登录提供商,打通身份系统与 OAuth2 登录/授权流程。以下是基于 Docker Compose 环境的完整配置示例:

1. 配置 Ory Hydra

通过配置文件或环境变量,将 Hydra 的登录、授权同意及登出端点指向 Kratos,并启用 Kratos 身份提供商集成:

方式一:YAML 配置文件

# hydra-config.yaml
serve:
  public:
    host: 0.0.0.0
    port: 4444
  admin:
    host: 0.0.0.0
    port: 4445

dsn: postgres://hydra:secret@postgres:5432/hydra?sslmode=disable

oauth2:
  consent_url: http://kratos:4433/self-service/login/browser?request={{request.id}}
  login_url: http://kratos:4433/self-service/login/browser?request={{request.id}}
  logout_url: http://kratos:4433/self-service/logout/browser

identity_providers:
  enabled: true
  kratos:
    enabled: true
    config:
      base_url: http://kratos:4433

方式二:Docker 环境变量(适配 Docker Compose)

HYDRA_DSN=postgres://hydra:secret@postgres:5432/hydra?sslmode=disable
HYDRA_OAUTH2_CONSENT_URL=http://kratos:4433/self-service/login/browser?request={{request.id}}
HYDRA_OAUTH2_LOGIN_URL=http://kratos:4433/self-service/login/browser?request={{request.id}}
HYDRA_OAUTH2_LOGOUT_URL=http://kratos:4433/self-service/logout/browser
HYDRA_IDENTITY_PROVIDERS_ENABLED=true
HYDRA_IDENTITY_PROVIDERS_KRATOS_ENABLED=true
HYDRA_IDENTITY_PROVIDERS_KRATOS_CONFIG_BASE_URL=http://kratos:4433

2. 配置 Ory Kratos

启用 Kratos 的 OAuth2 身份验证器,配置回调地址指向 Hydra,并关联提前创建的 Hydra 客户端:

# kratos-config.yaml
serve:
  public:
    host: 0.0.0.0
    port: 4433
  admin:
    host: 0.0.0.0
    port: 4434

dsn: postgres://kratos:secret@postgres:5432/kratos?sslmode=disable

selfservice:
  methods:
    oauth2:
      enabled: true
      config:
        providers:
          - id: hydra
            provider: generic
            label: Hydra
            client_id: kratos-client
            client_secret: kratos-secret-123
            issuer_url: http://hydra:4444
            scope:
              - openid
              - profile
              - email
            redirect_uri: http://kratos:4433/self-service/methods/oauth2/callback/hydra

创建 Hydra 客户端

先通过 Hydra Admin API 创建供 Kratos 使用的 OAuth2 客户端:

curl -X POST http://localhost:4445/clients \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "kratos-client",
    "client_secret": "kratos-secret-123",
    "grant_types": ["authorization_code", "refresh_token"],
    "response_types": ["code", "id_token"],
    "scope": "openid profile email",
    "redirect_uris": ["http://kratos:4433/self-service/methods/oauth2/callback/hydra"]
  }'

3. 调整 Docker Compose 配置

确保 Hydra、Kratos 与 Postgres 处于同一网络,可互相访问:

# docker-compose.yaml
version: '3.8'
services:
  postgres:
    image: postgres:14-alpine
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: postgres
    volumes:
      - postgres-data:/var/lib/postgresql/data
    networks:
      - ory-network

  hydra:
    image: oryd/hydra:v2.0.0
    environment:
      - HYDRA_DSN=postgres://hydra:secret@postgres:5432/hydra?sslmode=disable
      - HYDRA_OAUTH2_CONSENT_URL=http://kratos:4433/self-service/login/browser?request={{request.id}}
      - HYDRA_OAUTH2_LOGIN_URL=http://kratos:4433/self-service/login/browser?request={{request.id}}
      - HYDRA_OAUTH2_LOGOUT_URL=http://kratos:4433/self-service/logout/browser
      - HYDRA_IDENTITY_PROVIDERS_ENABLED=true
      - HYDRA_IDENTITY_PROVIDERS_KRATOS_ENABLED=true
      - HYDRA_IDENTITY_PROVIDERS_KRATOS_CONFIG_BASE_URL=http://kratos:4433
    command: serve all --dev
    depends_on:
      - postgres
    ports:
      - "4444:4444"
      - "4445:4445"
    networks:
      - ory-network

  kratos:
    image: oryd/kratos:latest
    environment:
      - KRATOS_DSN=postgres://kratos:secret@postgres:5432/kratos?sslmode=disable
    volumes:
      - ./kratos-config.yaml:/etc/kratos/kratos.yaml
    command: serve all --dev
    depends_on:
      - postgres
    ports:
      - "4433:4433"
      - "4434:4434"
    networks:
      - ory-network

volumes:
  postgres-data:

networks:
  ory-network:
    driver: bridge

验证集成效果

启动所有服务后,访问 Hydra 的 OAuth2 授权端点(示例):

http://localhost:4444/oauth2/auth?client_id=your-test-client&redirect_uri=http://localhost:3000/callback&response_type=code&scope=openid

页面会自动跳转到 Kratos 登录界面,完成登录后返回 Hydra 授权页面,最终可获取 OAuth2 授权码,证明集成成功。

内容的提问来源于stack exchange,提问作者Dany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:25:20