1. 控制流程

[!note] 流程图的绘制Mermaid参考连接,要注意的是,mermaid的有些语法gitbook是不支持的,比如三角图{}就不可以

流程全局

graph TD Requester(请求方) AG(网关) AG_CHECK_TOKEN_FORMAT(令牌格式有效?) AG_CHECK_TOKEN_FORMAT_FAIL(拒绝服务:令牌格式无效) AG_CHECK_TOKEN_FORMAT_PASS(令牌格式有效) AG_CHECK_TOKEN_EXPIRE(令牌过期?) AG_CHECK_TOKEN_EXPIRE_FAIL(拒绝服务:令牌过期) AG_CHECK_TOKEN_EXPIRE_PASS(令牌在期) XDUA(地球号) Requester-->AG AG-->AG_CHECK_TOKEN_FORMAT AG_CHECK_TOKEN_FORMAT--N-->AG_CHECK_TOKEN_FORMAT_FAIL AG_CHECK_TOKEN_FORMAT--Y-->AG_CHECK_TOKEN_FORMAT_PASS AG_CHECK_TOKEN_FORMAT_PASS-->AG_CHECK_TOKEN_EXPIRE AG_CHECK_TOKEN_EXPIRE--Y-->AG_CHECK_TOKEN_EXPIRE_PASS AG_CHECK_TOKEN_EXPIRE--N-->AG_CHECK_TOKEN_EXPIRE_FAIL AG_CHECK_TOKEN_EXPIRE_PASS --> XDUA XDUA_CHECK_TOKEN_COLOR(令牌格式有效?) XDUA_CHECK_TOKEN_COLOR_FAIL(拒绝服务:令牌格式无效) XDUA_CHECK_TOKEN_COLOR_PASS(令牌颜色有效) XDUA_CHECK_TOKEN_EXPIRE(令牌过期?) XDUA_CHECK_TOKEN_EXPIRE_FAIL(拒绝服务:令牌过期) XDUA_CHECK_TOKEN_EXPIRE_PASS(令牌合格) XDUA --> XDUA_CHECK_TOKEN_ISS(令牌是地球号签发的吗?) XDUA_CHECK_TOKEN_ISS --N--> XDUA_CHECK_TOKEN_ISS_NO(拒绝服务:非地球号令牌) XDUA_CHECK_TOKEN_ISS --Y--> XDUA_CHECK_TOKEN_COLOR XDUA_CHECK_TOKEN_COLOR --fail--> XDUA_CHECK_TOKEN_COLOR_FAIL XDUA_CHECK_TOKEN_COLOR --pass--> XDUA_CHECK_TOKEN_COLOR_PASS XDUA_CHECK_TOKEN_COLOR_PASS --> XDUA_CHECK_TOKEN_EXPIRE XDUA_CHECK_TOKEN_EXPIRE --pass--> XDUA_CHECK_TOKEN_EXPIRE_PASS XDUA_CHECK_TOKEN_EXPIRE --fail--> XDUA_CHECK_TOKEN_EXPIRE_FAIL XDUA_CHECK_TOKEN_EXPIRE_PASS --> XDUA_CHECK_TOKEN_API(检查令牌和API一致性) XDUA_CHECK_TOKEN_API --> XDUA_CHECK_TOKEN_API_ALLOWED_SHOP(令牌店铺在API店铺白名单) XDUA_CHECK_TOKEN_API_ALLOWED_SHOP --Y--> XDUA_CHECK_TOKEN_API_ALLOWED_SHOP_YES(OK) XDUA_CHECK_TOKEN_API_ALLOWED_SHOP --N--> XDUA_CHECK_TOKEN_API_ALLOWED_SHOP_NO(拒绝服务:在API白名单) XDUA_CHECK_TOKEN_API_ALLOWED_SHOP_YES --> XDUA_CHECK_TOKEN_API_ALLOWED_COLOR(令牌店铺在API店铺颜色白名单?) XDUA_CHECK_TOKEN_API_ALLOWED_COLOR --N--> XDUA_CHECK_TOKEN_API_ALLOWED_COLOR_NO(拒绝服务:令牌颜色不在API白名单?) XDUA_CHECK_TOKEN_API_ALLOWED_COLOR --Y--> XDUA_CHECK_TOKEN_API_ALLOWED_COLOR_YES(OK) XDUA_CHECK_TOKEN_API_ALLOWED_COLOR_YES --> XDUA_CHECK_TOKEN_TYPE(令牌类型?) XDUA_CHECK_TOKEN_TYPE --app--> XDUA_CHECK_TOKEN_TYPE_APP(应用令牌) XDUA_CHECK_TOKEN_TYPE --usr--> XDUA_CHECK_TOKEN_TYPE_USR(用户令牌) XDUA_CHECK_TOKEN_TYPE_APP --> XDUA_CHECK_APP_TOKEN_IF_ANONYMUS(匿名令牌?) XDUA_CHECK_APP_TOKEN_IF_ANONYMUS --Y--> XDUA_CHECK_APP_TOKEN_IF_ANONYMUS_YES(OK) XDUA_CHECK_APP_TOKEN_IF_ANONYMUS --N--> XDUA_CHECK_APP_TOKEN_IF_ANONYMUS_NO(拒绝服务,应用令牌必须匿名) XDUA_CHECK_APP_TOKEN_IF_ANONYMUS_YES --> XDUA_CHECK_APP_TOKEN_IF_COLORX(令牌是黑色吗?) XDUA_CHECK_APP_TOKEN_IF_COLORX --N--> XDUA_CHECK_APP_TOKEN_IF_COLORX_NO(拒绝服务,应用令牌必须黑色) XDUA_CHECK_APP_TOKEN_IF_COLORX --Y--> XDUA_CHECK_APP_TOKEN_IF_COLORX_YES(OK) XDUA_CHECK_APP_TOKEN_IF_COLORX_YES --> XDUA_CHECK_APP_TOKEN_IF_SHOPX(令牌来自黑店铺吗?) XDUA_CHECK_APP_TOKEN_IF_SHOPX --Y--> XDUA_CHECK_APP_TOKEN_IF_SHOPX_YES(OK) XDUA_CHECK_APP_TOKEN_IF_SHOPX --N--> XDUA_CHECK_APP_TOKEN_IF_SHOPX_NO(拒绝服务,应用令牌必须来自黑店铺) XDUA_CHECK_APP_TOKEN_IF_SHOPX_YES --> XDUA_CHECK_APP_TOKEN_IF_IPM(令牌IP白名单检查) XDUA_CHECK_APP_TOKEN_IF_IPM --N--> XDUA_CHECK_APP_TOKEN_IF_IPM_NO(拒绝服务,应用令牌不在IP白名单) XDUA_CHECK_APP_TOKEN_IF_IPM --Y--> XDUA_CHECK_APP_TOKEN_IF_IPM_YES(Okey) XDUA_CHECK_APP_TOKEN_IF_IPM_YES --> XDUA_CHECK_APP_TOKEN_IF_DEV(令牌设备白名单检查) XDUA_CHECK_APP_TOKEN_IF_DEV --N--> XDUA_CHECK_APP_TOKEN_IF_DEV_NO(拒绝服务,应用令牌不在设备白名单) XDUA_CHECK_APP_TOKEN_IF_DEV --Y--> XDUA_DB(地球号DB) subgraph app_token_db XDUA_DB --> XDUA_DB_CHECK_APP_TOKEN_IF_EXISTS(令牌存在?) XDUA_DB_CHECK_APP_TOKEN_IF_EXISTS --N--> XDUA_DB_CHECK_APP_TOKEN_IF_EXISTS_NO(拒绝服务:令牌不存在) XDUA_DB_CHECK_APP_TOKEN_IF_EXISTS --Y--> XDUA_DB_CHECK_APP_TOKEN_IF_DISABLED(令牌拉黑?) XDUA_DB_CHECK_APP_TOKEN_IF_DISABLED --Y--> XDUA_DB_CHECK_APP_TOKEN_IF_DISABLED_YES(拒绝服务:令牌拉黑) XDUA_DB_CHECK_APP_TOKEN_IF_DISABLED --N--> XDUA_DB_CHECK_APP_TOKEN_IF_DISABLED_NO(令牌正常) end XDUA_DB_CHECK_APP_TOKEN_IF_DISABLED_NO --> XDUA_SERVICE_BEGIN_ENTRY1(业务服务) XDUA_CHECK_TOKEN_TYPE_USR(用户令牌) XDUA_CHECK_TOKEN_TYPE_USR --> XDUA_CHECK_USR_TOKEN_IF_ANONYMUS(匿名令牌?) XDUA_CHECK_USR_TOKEN_IF_ANONYMUS --N--> XDUA_CHECK_USR_TOKEN_IF_ANONYMUS_YES(拒绝服务,用户令牌不能匿名) XDUA_CHECK_USR_TOKEN_IF_ANONYMUS --Y--> XDUA_CHECK_USR_ROUE(角权检查) XDUA_CHECK_USR_ROUE --> XDUA_GET_USER_RULE(数据库获取用户的权限表) XDUA_GET_USER_RULE --> XDUA_CHECK_API_RULE_IN_USR_RULES(用户权限包含API权限) XDUA_CHECK_API_RULE_IN_USR_RULES --Y--> XDUA_SERVICE_BEGIN_ENTRY2(业务服务) XDUA_CHECK_API_RULE_IN_USR_RULES --N--> XDUA_CHECK_API_RULE_IN_USR_RULES_NO(拒绝服务:用户权限不够)

流程局部:用户令牌

graph TD XDUA_CHECK_TOKEN_TYPE_USR(用户令牌) XDUA_CHECK_TOKEN_TYPE_USR --> XDUA_CHECK_USR_TOKEN_IF_ANONYMUS(匿名令牌?) XDUA_CHECK_USR_TOKEN_IF_ANONYMUS --N--> XDUA_CHECK_USR_TOKEN_IF_ANONYMUS_YES(拒绝服务,用户令牌不能匿名) XDUA_CHECK_USR_TOKEN_IF_ANONYMUS --Y--> XDUA_CHECK_USR_ROUE(角权检查) XDUA_CHECK_USR_ROUE --> XDUA_GET_USER_RULE(数据库获取用户的权限表) XDUA_GET_USER_RULE --> XDUA_CHECK_API_RULE_IN_USR_RULES(用户权限包含API权限) XDUA_CHECK_API_RULE_IN_USR_RULES --Y--> XDUA_SERVICE_BEGIN_ENTRY2(业务服务) XDUA_CHECK_API_RULE_IN_USR_RULES --N--> XDUA_CHECK_API_RULE_IN_USR_RULES_NO(拒绝服务:用户权限不够)

results matching ""

    No results matching ""