应用接入#
创建应用#
SaaS应用#
OIDC#
1.在ArkID中点击应用管理-应用列表-本地应用,点击开发与代理,跳转到ArkStore
2.在ArkStore中点击开发商-应用管理-中心ArkID-应用管理-应用列表-本地应用-创建,来创建应用
点击创建
3.对新创建的应用,点击协议配置,选择OIDC-platform协议,并完成应用接入
提示
OIDC-platform就是OIDC协议,只是该类型的应用可以被整个平台所有租户访问。你可以按照OIDC的接入流程接入即可,只是用户参数中会增加:租户标识。
4.点击开发商-SaaS应用-添加应用,接入方式选择OIDC,应用ID输入步骤2中创建的应用ID(可通过点击步骤2中创建应用的编辑按钮来获取)
点击添加应用
5.设置价格,详情请见价格规则
点击设置价格
6.提交审核
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:
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
2.在Arkstore中点击开发商-应用管理-私有部署应用-添加应用,上传Helm Charts的tgz格式压缩包
点击创建
3.设置价格,详情请见价格规则
点击设置价格
4.提交审核
5.龙归审核通过后,应用上架完成,所有ArkID的用户在其应用商店中都能看到该应用。