1. 令牌创建

1.1. 基本介绍

地球号的令牌按种类分为四种:A,D,L,U。分别代表算法令牌,数据令牌,登录令牌,用户令牌。令牌的颜色有四种:XRGBA

令牌种类 令牌颜色 令牌描述
A X 算法令牌,颜色X,属于神级令牌。
D X 数据令牌,颜色X,属于神级令牌。
L X 登录令牌,颜色X,属于神级令牌,包含根登录令牌。
U X/R/G/B 用户令牌,颜色根据登录的店铺颜色决定。

根登录令牌

在服务器端用Jwt密钥生成的根登录令牌,它是conso.xdua.com的专用令牌,它也是令牌的唯一祖先。它的aud字段,也就是应用,是一个叫LoginApp的应用。这个应用专门用于根登录令牌。

  1. 用脚本在服务器生成一个根令牌。
  2. 用根令牌登录console.xdua.com,创建社区,企业,店铺,社区对应的控制台应用。
  3. 开发者用户登录X级的店铺,获取颜色为R的用户令牌。
  4. 开发者用R色用户令牌,创建所在社区的某个应用的登录令牌。
  5. 开发者用这个登录令牌登录应用,干各种事情。

登录令牌

用户持有登录令牌,登陆后可以获取用户令牌,那登录令牌怎么获取呢?开发者自己创建某个应用后,就可以在这个应用下创建它的登录令牌。然后就可以用这个令牌初始化SDK,然后登录

如果要创建不拘泥于某个应用的登录令牌呢?

登录令牌,每个社区一个或多个,那登录令牌挂靠在哪个应用下?我们规定登录令牌挂靠在地球号系统一个叫“LoginApp”的应用下。这个时候的每个计费

令牌格式参考令牌格式

登录令牌如何获取?

用户登录自己的consoler.xxxxxxxx.xdua.com控制台,创建自己的APP,点击APP进入,就可以看到自己的社区登录令牌,这个登录令牌的shop字段是本社区ID(也就是本社区直辖店铺ID)。

用户登录自己的consoler.xxxxxxxx.xdua.com控制台,进入自己的企业,创建自己的APP,点击APP进入,就可以看到自己的企业登录令牌,这个登录令牌的shop字段是本企业ID(也就是本企业直辖店铺ID)。

用户登录自己的consoler.xxxxxxxx.xdua.com控制台,进入自己的店铺,创建自己的APP,点击APP进入,就可以看到自己的企业店铺令牌,这个登录令牌的shop字段是本店铺ID。这个令牌理论上只能用于登录本店铺。

比方说在智慧养老这个场景,每个养老院想要属于自己的APP,而且这个APP不能登录企业通用的APP,此时就需要这样的令牌。

算法令牌

当开发者想使用地球号算法令牌的时候,可以直接申请创建算法令牌(不需要创建应用),这里会由默认应用ID,是ALgoSApp

数据令牌

当开发者想使用地球号数据令牌的时候,可以直接申请创建数据令牌(不需要创建应用),这里会由默认应用ID,是DaTaSApp

开发者也可以创造基于某个应用数据令牌。

为什么支持基于DaTaSApp的数据令牌?

因为有些情况下,平台仅仅是给开发者一个令牌,而不需要告诉开发者这个令牌基于某个应用。

用户令牌

在应用或者控制台登录,就可以获取登录令牌。

1.2. 如何创建?

开发者登录自己的社区控制台,颜色为X的店铺,他们的域名都是console.xdua.com。在这里就可以获取各应用的登录令牌。所以顺序是 令牌创建可以根据tokenl,tokena,tokend创建具体某种令牌,也可以根据token创建无所不能的令牌。

1.2.1. 创建登录令牌

访问tokenl资源

字段 类型
typ 前端填写常量L/A/D
aud 开发者创建登录令牌时候所属的应用ID
iss 后台自动填充xdua.com常量
iat 后台自动填写创建时的UNIX时间戳
sub 后台自动填写AnoNymuS常量。三种令牌都是匿名的
exp 后台自动填写,距离当前时间10年后
jti 前端填写自定义字符串,理论上用来防重放,但对于登录令牌无意义,所以这个地方直接由前端自己定义
nbf 后端填写,是个UNIX时间戳,
clr 后台自动填写X
ipm 前端填写,如果不填写,后台默认*
dvm 前端填写,如果不填写,后台默认*
own 后台自动填写,创建者的ID
tid 后台自动填写
lgn 后台自动填写!常量
tag 后台自动填写Login/Data/Algo常量
api 后台自动填写AddLogin常量
bug 后台自动填写!常量,表示不调试
zone 后台自动填写XdUaXduA
corp 后台自动填写XdUaXduA
shop 后台自动填写XdUaXduA
role 后台自动填写AnoNymuS常量
rule 后台自动填写CreateLogin常量

[!note|label=最终决定] 登录令牌,算法令牌,数据令牌必须是神社的匿名用户访问。这点记录压倒所有记录

1.3. 算法令牌

算法令牌是开发者自己创建的。

1.4. 店铺切换和令牌切换?

我们在控制台或者客户APP里,完成企业界面到店铺的切换,社区界面到企业的切换,这种切换会需要不同的权限。 我们以前是按照登录不同shop的方式进行的是切换,每次切换其实是完成了一次登录。这样的方式笨拙且不安全(每次都要发密码M5D)。 我们决定制造一个接口,addLogon,用来表示切换店铺,成功就是允许切换,返回切换后的令牌。如果不成功,就返回error>0。 这个功能模仿一次登录,产生一个新的令牌。 注意:

  1. 这是app内切换,所以aud字段不变
  2. 同一个用户的切换,sub不变
  3. 令牌typ不变,一直是U令牌
  4. 令牌的tid是个问题,复制还是改变?如果不复制,就需要在token表中新建一个token。结论:新建。
  5. 令牌的lgn是个问题,因为这不是传统意义上的登录,所以填写"NullNull"。

要变的是

  1. shop/corp/zone字段
  2. 令牌颜色clr要变

这个功能还有个附加功能,比如,如果旧的shop_id和新的shop_id一样,说明客户端仅仅是为了更新令牌。·

客户端用这个令牌干嘛?

客户端可以用这个新的用户令牌覆盖掉本地的用户令牌,逻辑上也就是完成了页面的切换。

eyJhbGciOiJSUzI1NiIsImtpZCI6ImI1MGIxZWZmZGMwMzVlMjg2OWI2YzQ1ZjMzYmRmNWQ3In0.eyJpYXQiOjE1ODc4OTgxMzEsIm5iZiI6MTU4Nzg5ODEzMSwiaXNzIjoieGR1YS5jb20iLCJleHAiOjE5MDMyNTgxMzEsImF1ZCI6IkR1bW15QXBQIiwic3ViIjoiQW5vTnltdVMiLCJqdGkiOiIxMjM0NTY3OCIsImlwbSI6IioiLCJkdm0iOiIqIiwic2FwIjoiU3ZLZXJuZUwiLCJhcGkiOiJHZXRPZGV2IiwiY2xyIjoiWCIsIm93biI6IkR0NW12cnRVIiwidGlkIjoiM25nM0lMU0oiLCJidWciOiIiLCJsZ24iOiJOdWxsTnVsbCIsInR5cCI6IkwiLCJ0YWciOiJQcmltYXJ5Iiwiem9uZSI6IlhkVWFYZHVBIiwiY29ycCI6IlhkVWFYZHVBIiwic2hvcCI6IlhkVWFYZHVBIiwicm9sZSI6IioiLCJydWxlIjoiKiJ9.S-jPzH1KZZAwvu-1Yczoutdd964gnRDSWUYMLv8uxbn5aqjIN0FFiC2EE_0LgslkKaJFOsNo5auxVWaW2qv_kICc2NXjOaZYQf1z_l-w4WtlKJUhUTwbqIGy45_RJjW2F4-dA_jaZOahpRIrT8dxN8Xe430N_bF-IAOWnlwpURpkyJdbJt75ZaS8i5sa_CzoLbWTTPvbdvapCW8D6e0senHUl7nDTWD-AUvCtP-MbIlhaH5aXBdugsd1iNiPxQXvL0_xh3nGIdjTQJ06i0C5cIrVlx6vU7YPkpoL-pzW770b5KcOhBrIqeDsz5uPtPkQEWAeMR_zepDUq3XzTD7MmAArray
(
    [iat] => 1587898131
    [nbf] => 1587898131
    [iss] => xdua.com
    [exp] => 1903258131
    [aud] => DummyApP
    [sub] => AnoNymuS
    [jti] => 12345678
    [ipm] => *
    [dvm] => *
    [sap] => SvKerneL
    [api] => GetOdev
    [clr] => X
    [own] => Dt5mvrtU
    [tid] => 3ng3ILSJ
    [bug] =>
    [lgn] => NullNull
    [typ] => L
    [tag] => Primary
    [zone] => XdUaXduA
    [corp] => XdUaXduA
    [shop] => XdUaXduA
    [role] => *
    [rule] => *
)
{"iat":1587898131,"nbf":1587898131,"iss":"xdua.com","exp":1903258131,"aud":"DummyApP","sub":"AnoNymuS","jti":"12345678","ipm":"*","dvm":"*","sap":"SvKerneL","api":"GetOdev","clr":"X","own":"Dt5mvrtU","tid":"3ng3ILSJ","bug":"","lgn":"NullNull","typ":"L","tag":"Primary","zone":"XdUaXduA","corp":"XdUaXduA","shop":"XdUaXduA","role":"*","rule":"*"}

2. 下面是养老通控制台的登录token

eyJhbGciOiJSUzI1NiIsImtpZCI6ImI1MGIxZWZmZGMwMzVlMjg2OWI2YzQ1ZjMzYmRmNWQ3In0.eyJpYXQiOjE1ODgxNDUwNDcsIm5iZiI6MTU4ODE0NTA0NywiaXNzIjoieGR1YS5jb20iLCJleHAiOjE5MDM1MDUwNDcsImF1ZCI6IkNvbnNvbGVFIiwic3ViIjoiQW5vTnltdVMiLCJqdGkiOiIxMjM0NTY3OCIsImlwbSI6IioiLCJkdm0iOiIqIiwic2FwIjoiU3ZLZXJuZUwiLCJhcGkiOiJDcmVhdGVMb2dpbiIsImNsciI6IlIiLCJvd24iOiJEdDVtdnJ0VSIsInRpZCI6IndpR2tQTE05IiwiYnVnIjoiISIsImxnbiI6Ik51bGxOdWxsIiwidHlwIjoiTCIsInRhZyI6IlByaW1hcnkiLCJ6b25lIjoiRWxkckNhUkUiLCJjb3JwIjoiRWxkckNhUkUiLCJzaG9wIjoiRWxkckNhUkUiLCJyb2xlIjoiKiIsInJ1bGUiOiIqIn0.N-2ng_5mfWxYfSFt41-DYQpC2-VYCx4P9hma8B2YcgNOhTbgAwZiDLzKz343Y9_j0lUGFj3MYiMq59zsxU54AKIpRKuCcv1eFDPgjEPnLt1SFwlsy8u69Z-xx7jDmMQroHcvUjB211AOx54FghQK8WDRy41ROmkjhV0_kSAP9ALdgJgQV5GjpyAIxmcIsb_9WbZ154YZkUfMbGlkab2YTyWBzuj-qBcX6ZJTdKun2ahP62Jcwfyde_p8UHyl8RakuTK-sR55Vk_yP0t7Sw0JvZ5awzb1vWIkERprSdb_ku4T84N3gD01ObuopSc43DfnRxiPd48He7hcP5DG4NFAlgArray
(
    [iat] => 1588145047
    [nbf] => 1588145047
    [iss] => xdua.com
    [exp] => 1903505047
    [aud] => ConsoleE
    [sub] => AnoNymuS
    [jti] => 12345678
    [ipm] => *
    [dvm] => *
    [sap] => SvKerneL
    [api] => CreateLogin
    [clr] => R
    [own] => Dt5mvrtU
    [tid] => wiGkPLM9
    [bug] => !
    [lgn] => NullNull
    [typ] => L
    [tag] => Primary
    [zone] => EldrCaRE
    [corp] => EldrCaRE
    [shop] => EldrCaRE
    [role] => *
    [rule] => *
)
{"iat":1588145047,"nbf":1588145047,"iss":"xdua.com","exp":1903505047,"aud":"ConsoleE","sub":"AnoNymuS","jti":"12345678","ipm":"*","dvm":"*","sap":"SvKerneL","api":"CreateLogin","clr":"R","own":"Dt5mvrtU","tid":"wiGkPLM9","bug":"!","lgn":"NullNull","typ":"L","tag":"Primary","zone":"EldrCaRE","corp":"EldrCaRE","shop":"EldrCaRE","role":"*","rule":"*"}

3. 下面是养老通后台的登录token

eyJhbGciOiJSUzI1NiIsImtpZCI6ImI1MGIxZWZmZGMwMzVlMjg2OWI2YzQ1ZjMzYmRmNWQ3In0.eyJpYXQiOjE2MDgzOTAxNDMsIm5iZiI6MTYwODM5MDE0MywiaXNzIjoieGR1YS5jb20iLCJleHAiOjE5MjM3NTAxNDMsImF1ZCI6IkFkbU1hbkh1Iiwic3ViIjoiQW5vTnltdVMiLCJqdGkiOiIxMjM0NTY3OCIsImlwbSI6IioiLCJkdm0iOiIqIiwic2FwIjoiU3ZLZXJuZUwiLCJhcGkiOiIqIiwiY2xyIjoiUiIsIm93biI6IkR0NW12cnRVIiwidGlkIjoidXBxSUNMRUgiLCJidWciOiJERSIsImxnbiI6Ik51bGxOdWxsIiwidHlwIjoiTCIsInRhZyI6IlByaW1hcnkiLCJ6b25lIjoiRWxkckNhUkUiLCJjb3JwIjoiRWxkckNhUkUiLCJzaG9wIjoiRWxkckNhUkUiLCJyb2xlIjoiKiIsInJ1bGUiOiIqIn0.pUiq1aH8qe8jKyfsZ7ZC70e8Qu1l2QOraYGDcnAmQH3BSq-B_N2Y7Ii8D4cS8W6fcT8fhTDGeZ9CdEHf_WYO6bUuOvX2lDdHFrkrFoVFpLl32pl0-oIuoSXIoIVmPefXcAXvuRI5vtwqGT1-HR1F5aWu69rf9S-9NIkJDNcQ0cd-dmEUDxKCWwXmoMr26AsHKbKlV2cL-7O3shnMoHuTvFHYHEPSjdtXyJOaqALAxStZ7kfkDLzi3V2HusYihQrWVZQ5RcERUPo9EarSFNaIE4wyEkDsU4PZAXjtPnCJNct-Y8lb52UIjH1pbQL_WdVSQdDWlT7_pR0fDaxItSpLMQArray
(
    [iat] => 1608390143
    [nbf] => 1608390143
    [iss] => xdua.com
    [exp] => 1923750143
    [aud] => AdmManHu
    [sub] => AnoNymuS
    [jti] => 12345678
    [ipm] => *
    [dvm] => *
    [sap] => SvKerneL
    [api] => *
    [clr] => R
    [own] => Dt5mvrtU
    [tid] => upqICLEH
    [bug] => DE
    [lgn] => NullNull
    [typ] => L
    [tag] => Primary
    [zone] => EldrCaRE
    [corp] => EldrCaRE
    [shop] => EldrCaRE
    [role] => *
    [rule] => *
)
{"iat":1608390143,"nbf":1608390143,"iss":"xdua.com","exp":1923750143,"aud":"AdmManHu","sub":"AnoNymuS","jti":"12345678","ipm":"*","dvm":"*","sap":"SvKerneL","api":"*","clr":"R","own":"Dt5mvrtU","tid":"upqICLEH","bug":"DE","lgn":"NullNull","typ":"L","tag":"Primary","zone":"EldrCaRE","corp":"EldrCaRE","shop":"EldrCaRE","role":"*","rule":"*"}

4. ConsoleX控制台创建令牌。

场景,超级管理员在consoleX创建一个社区EldrCaRE后,要为养老通网站eldrcare.xdua.com(对应的APP ID是ConsoleE) 创建一个电话登录的token

超级控制台如何做这件事:选择社区(shop_id),选择API(AddToginr),选择用户(uid),选择(APP)。

这个令牌规定了shop_id范围内发生的用户uid通过App发出AddToginr的权限。

results matching ""

    No results matching ""