Skip to content

应用接入#

创建应用#

SaaS应用#

OIDC#

1.在ArkID中点击应用管理-应用列表-本地应用,点击开发与代理,跳转到ArkStore

Bbbgph.png

2.在ArkStore中点击开发商-应用管理-中心ArkID-应用管理-应用列表-本地应用-创建,来创建应用
点击创建 Bb8yEt.png

创建应用 Bb8NyJ.png

3.对新创建的应用,点击协议配置,选择OIDC-platform协议,并完成应用接入

Bb8EoL.png

提示

OIDC-platform就是OIDC协议,只是该类型的应用可以被整个平台所有租户访问。你可以按照OIDC的接入流程接入即可,只是用户参数中会增加:租户标识。

4.点击开发商-SaaS应用-添加应用,接入方式选择OIDC,应用ID输入步骤2中创建的应用ID(可通过点击步骤2中创建应用的编辑按钮来获取)
点击添加应用 Bb83p7.png

添加应用 Bb8u2B.png

获取应用ID Bb8qUG.png

5.设置价格,详情请见价格规则
点击设置价格 Bb8l8I.png

设置价格 Bb87tV.png

6.提交审核

Bb8l8I.png

7.龙归审核通过后,应用上架完成,所有ArkID的用户在其应用商店中都能看到该应用。

自定义认证协议#

如果你的应用使用的是其它非标准协议,请联系我们。

账密代填#

如果你的应用暂时无法通过OIDC接入,我们还推荐使用账密代填的方式。

创建账密代填应用与创建OIDC应用相似,只需在步骤3中协议配置选择AutoFormFill,同时在步骤4中选择表单代填即可。

账密代填并非单点登录的协议,只是会在浏览器中记录对应站点的账号密码,并自动填入并点击登录。

如果该网站使用了如验证码等额外的方式,则不适用账密代填。

推广链接#

如果当前应用不支持上述各类情况,你可以仅仅上传一个ArkID的专属推广链接,并记录下该用户后续的注册,登录,付费等行为,用来作为与ArkID分账的依据。

通常这种情况,支付会使用内付费的形式,你需要联系我们。

私有化部署应用#

私有化部署应用打包#

私有化部署应用采用Helm Chart方式打包,参考:https://helm.sh/docs/topics/charts/
同时,私有化部署应用打包需要对Helm Chart包做额外处理,才能对接ArkID应用创建与自动化OIDC配置。

1.Chart.yaml文件中添加额外字段
Chart.yaml中annotations须加入下来配置,才会让ArkID自动创建入口应用

annotations:
  web_url_from_services: HelmChart中k8s的service名称
示例:
annotations:
  category: Infrastructure
  # 这会在私有化部署应用grafana安装后,在ArkID应用管理页面中,自动创建grafana应用
  web_url_from_services: grafana
apiVersion: v2
appVersion: 9.2.5
description: The leading tool for querying and visualizing time series and metrics.
home: https://grafana.net
icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png
kubeVersion: ^1.8.0-0
maintainers:
- email: zanhsieh@gmail.com
  name: zanhsieh
- email: rluckie@cisco.com
  name: rtluckie
- email: maor.friedman@redhat.com
  name: maorfr
- email: miroslav.hadzhiev@gmail.com
  name: Xtigyro
- email: mail@torstenwalter.de
  name: torstenwalter
name: grafana
sources:
- https://github.com/grafana/grafana
type: application
version: 6.44.6

2.Helm Chart的templates目录下service.yaml文件处理
service.yaml里的service名字需要与1中annotations.web_url_from_services.service名字一致,且service port必须为80。 如果不是,可以复制service.yaml来创建service-copy.yaml文件,修改复制后文件里的service名字和port端口。

3.Helm Chart的根目录添加arkid-oidc.yaml文件,与values.yaml在同一个目录下
arkid-oidc.yaml文件在私有化部署应用安装时,作为自定义配置来覆盖Helm Chart默认的values.yaml配置。
arkid-oidc.yaml文件中支持下列oidc自定义配置参数,说明:应用安装支持自动配置OIDC来登录应用,下表中参数会被发送给Helm前替换成实际的OIDC地址

参数 说明 例子
$arkid_oidc_root_url ArkID应用入口地址 https://1cce88fae2bf4470a0d616d9459431b3.arkidv2.dev.longguikeji.com
$arkid_oidc_client_id client_id 1hQdgZJ9Gf9KhQGhL9RLmatEV1q97rp8Od9kR8n8
$arkid_oidc_client_secret client_secret FT2rETrpg9tmtB0wChSBUmRLlHXNH6eesPbeRl2qHpZ1nD3fcCFlEfa3UxLRsiR5MpHvc15i6zZcwLmMtcqVy5zf7ONqSOALNRXP1bBaWALbn2nrn8BLtEuaFIZvtrEm
$arkid_oidc_authorize authorize地址 https://arkidv2.dev.longguikeji.com/api/v1/tenant/49b91127-f786-4535-917d-a88024831a6d/app/e0d0253a-a97b-4b98-8506-cd1275573bdb/oauth/authorize/
$arkid_oidc_token 获取token地址 https://arkidv2.dev.longguikeji.com/api/v1/tenant/49b91127-f786-4535-917d-a88024831a6d/oauth/token/
$arkid_oidc_jwks_url 获取jwks证书地址 https://arkidv2.dev.longguikeji.com/api/v1/tenant/49b91127-f786-4535-917d-a88024831a6d/.well-known/jwks.json
$arkid_oidc_userinfo 获取用户信息地址 https://arkidv2.dev.longguikeji.com/api/v1/tenant/49b91127-f786-4535-917d-a88024831a6d/oauth/userinfo/
$arkid_oidc_logout 登出地址 https://arkidv2.dev.longguikeji.com/api/v1/tenant/49b91127-f786-4535-917d-a88024831a6d/oidc/logout/
$arkid_oidc_issuer_url issuer地址 https://arkidv2.dev.longguikeji.com/api/v1/tenant/49b91127-f786-4535-917d-a88024831a6d
$arkid_oidc_skip_authorization 是否隐藏授权页 False
$arkid_oidc_client_type 客户端类型 confidential
$arkid_oidc_grant_type 授权模式 authorization-code
$arkid_oidc_algorithm 加密类型 RS256
$arkid_oidc_redirect_uris 回调地址 /oidc/callback
$arkid_oidc_login_url OIDC登录地址 /oidc/login
$arkid_oidc_app_id 应用ID e0d0253a-a97b-4b98-8506-cd1275573bdb
$arkid_oidc_tenant_id 租户ID 49b91127-f786-4535-917d-a88024831a6d
$arkid_oidc_host 登出地址 https://arkidv2.dev.longguikeji.com

如所需参数不在上表中,可采用字符串拼接方式来生成:
例如:"${arkid_oidc_host}/api/v1/tenant/${arkid_oidc_tenant_id}/oauth/userinfo/",在私有化应用安装时会被替换成:"https://arkidv2.dev.longguikeji.com/api/v1/tenant/49b91127-f786-4535-917d-a88024831a6d/oauth/userinfo/"

例子1: Jumpserver的arkid-oidc.yaml文件

global:
  storageClass: standard

## Please configure your MySQL server first
## Jumpserver will not start the external MySQL server.
##
externalDatabase:
  engine: mysql
  host: jms-mysql
  port: 3306
  user: root
  password: "weakPassword"
  database: jumpserver

## Please configure your Redis server first
## Jumpserver will not start the external Redis server.
##
externalRedis:
  host: jms-redis-master
  port: 6379
  password: "weakPassword"

ingress:
  hosts:
    - "test.jumpserver.org"

core:
  config:
    # Generate a new random secret key by execute `cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
    secretKey: "GxrLH7rewfsRN8B9Zl6MEGD50Uou4LF6UVsEIwfsRN8B9Zl6MEGD50UouayGMhYll8dqmn"
    # Generate a new random bootstrap token by execute `cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`
    bootstrapToken: "ilR8RvAbK7lgRTxs"
    log:
      level: DEBUG

  env:
    # Doc: https://docs.jumpserver.org/zh/master/admin-guide/authentication/openid/#5-jumpserver
    AUTH_OPENID: True
    BASE_SITE_URL: $arkid_oidc_root_url
    AUTH_OPENID_CLIENT_ID: $arkid_oidc_client_id
    AUTH_OPENID_CLIENT_SECRET: $arkid_oidc_client_secret
    AUTH_OPENID_PROVIDER_ENDPOINT: $arkid_oidc_client_authorize
    AUTH_OPENID_PROVIDER_AUTHORIZATION_ENDPOINT: $arkid_oidc_client_authorize
    AUTH_OPENID_PROVIDER_TOKEN_ENDPOINT: $arkid_oidc_client_token
    AUTH_OPENID_PROVIDER_JWKS_ENDPOINT: $arkid_oidc_jwks
    AUTH_OPENID_PROVIDER_USERINFO_ENDPOINT: $arkid_oidc_client_userinfo
    AUTH_OPENID_PROVIDER_END_SESSION_ENDPOINT: $arkid_oidc_logout
    AUTH_OPENID_PROVIDER_SIGNATURE_ALG: HS256
    AUTH_OPENID_PROVIDER_SIGNATURE_KEY: null
    AUTH_OPENID_SCOPES: openid profile email
    AUTH_OPENID_ID_TOKEN_MAX_AGE: 60
    AUTH_OPENID_ID_TOKEN_INCLUDE_CLAIMS: True
    AUTH_OPENID_USE_STATE: True
    AUTH_OPENID_USE_NONCE: True
    AUTH_OPENID_SHARE_SESSION: False
    AUTH_OPENID_IGNORE_SSL_VERIFICATION: True

例子2: Grafana的arkid-oidc.yaml文件

## arkid-oidc.yaml
env: 
  GF_SERVER_ROOT_URL: $arkid_oidc_root_url
  GF_AUTH_GENERIC_OAUTH_ENABLED: "true"
  GF_AUTH_GENERIC_OAUTH_NAME: "arkid"
  GF_AUTH_GENERIC_OAUTH_CLIENT_ID: "$arkid_oidc_client_id"
  GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET: "$arkid_oidc_client_secret"
  GF_AUTH_GENERIC_OAUTH_SCOPES: "email,openid,userinfo"
  GF_AUTH_GENERIC_OAUTH_AUTH_URL: "$arkid_oidc_authorize"
  GF_AUTH_GENERIC_OAUTH_TOKEN_URL: "$arkid_oidc_token"
  GF_AUTH_GENERIC_OAUTH_API_URL: "$arkid_oidc_userinfo"

私有化部署应用上传#

1.在ArkID中点击应用管理-应用列表-本地应用,点击开发与代理,跳转到ArkStore

Bbbgph.png

2.在Arkstore中点击开发商-应用管理-私有部署应用-添加应用,上传Helm Charts的tgz格式压缩包
点击创建 Bb8gpP.png

上传文件Helm Chart的tgz文件 Bb8hGw.png

3.设置价格,详情请见价格规则
点击设置价格 Bb8Kje.png

设置价格 Bb87tV.png

4.提交审核

Bb8Kje.png

5.龙归审核通过后,应用上架完成,所有ArkID的用户在其应用商店中都能看到该应用。

6.应用更新,点击编辑-更新安装包 Bb8Kje.png

评论