@alanwang-merit/meritdata-platform-skill-package 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/CHANGELOG.md +1094 -0
  2. package/README.md +366 -0
  3. package/docs//344/270/211/346/226/271skill/346/230/240/345/260/204/345/205/263/347/263/273/346/270/205/345/215/225_20260907.md +349 -0
  4. package/docs//344/272/214/345/274/20012/351/230/266/346/256/265/345/274/200/345/217/221/346/265/201/347/250/213/346/226/207/346/241/243/346/241/206/346/236/266/346/217/220/345/217/226_20260907.md +286 -0
  5. package/package.json +7 -0
  6. package/rules/README.md +112 -0
  7. package/rules/api-design-rules.md +96 -0
  8. package/rules/code-dev-rules.md +167 -0
  9. package/rules/coding-standards-rules.md +99 -0
  10. package/rules/documentation-rules.md +102 -0
  11. package/rules/frontend-coding-rules.md +128 -0
  12. package/rules/frontend-component-rules.md +174 -0
  13. package/rules/git-workflow-rules.md +85 -0
  14. package/rules/meritdata-platform-data-boundary.md +183 -0
  15. package/rules/meritdata-platform-domain-model-rules.md +248 -0
  16. package/rules/nacos-rules.md +154 -0
  17. package/rules/naming-conventions-rules.md +98 -0
  18. package/rules/performance-rules.md +102 -0
  19. package/rules/requirement-dev-rules.md +77 -0
  20. package/rules/security-rules.md +91 -0
  21. package/rules/sql-naming-rules.md +397 -0
  22. package/rules/sql-script-rules.md +146 -0
  23. package/rules/system-test-rules.md +90 -0
  24. package/rules/test-case-dev-rules.md +96 -0
  25. package/skills/README.md +118 -0
  26. package/skills/meritdata-bootstrap-2nd-dev/SKILL.md +37 -0
  27. package/skills/meritdata-bootstrap-2nd-dev/references/guide.md +245 -0
  28. package/skills/meritdata-bootstrap-2nd-dev/references/template.md +229 -0
  29. package/skills/meritdata-bootstrap-2nd-dev/references/verify.md +204 -0
  30. package/skills/meritdata-dev-docs-file-finder/SKILL.md +215 -0
  31. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/205/254/345/205/261/350/265/204/344/272/247/346/270/205/345/215/225-/345/216/237/346/226/207/344/273/266.md +3516 -0
  32. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/244/226/351/203/250/346/216/245/345/217/243/346/270/205/345/215/225-/345/216/237/346/226/207/344/273/266.md +12391 -0
  33. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/270/203/357/274/211/357/274/232/347/263/273/347/273/237/344/270/232/345/212/241/346/227/245/345/277/227/350/247/204/350/214/203.md +95 -0
  34. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/270/211/357/274/211/357/274/232/347/273/204/347/273/207/345/222/214/344/272/272/345/221/230/345/257/274/345/205/245.md +88 -0
  35. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/271/235/357/274/211/357/274/232/345/257/206/347/272/247/344/272/214/346/254/241/345/274/200/345/217/221/346/226/207/346/241/243.md +198 -0
  36. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/271/235/357/274/211/357/274/232/345/257/206/347/272/247/345/212/237/350/203/275.md +128 -0
  37. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/271/235/357/274/211/357/274/232/347/273/204/347/273/207/345/222/214/344/272/272/345/221/230/345/220/214/346/255/245.md +912 -0
  38. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/272/214/357/274/211/357/274/232/347/263/273/347/273/237/351/205/215/347/275/256/351/241/271/347/256/241/347/220/206.md +923 -0
  39. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/205/253/357/274/211/357/274/232/346/227/245/345/277/227/345/244/207/344/273/275/345/212/237/350/203/275/344/275/277/347/224/250/350/257/264/346/230/216.md +110 -0
  40. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/205/255/357/274/211/357/274/232/347/263/273/347/273/237/346/216/210/346/235/203/344/272/247/345/223/201/345/214/205/346/211/251/345/261/225.md +136 -0
  41. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/215/201/344/270/200/357/274/211/357/274/232/346/266/210/346/201/257/344/270/255/345/277/203.md +1096 -0
  42. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/215/201/344/270/200/357/274/211/357/274/232/350/260/203/345/272/246/347/274/226/346/216/222/344/272/214/345/274/200/350/257/264/346/230/216.md +244 -0
  43. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/215/201/344/272/214/357/274/211/357/274/232VUE/345/211/215/347/253/257/345/205/254/345/205/261/345/274/271/346/241/206/347/273/204/344/273/266/344/275/277/347/224/250.md +136 -0
  44. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/215/201/345/233/233/357/274/211/357/274/232/346/225/260/346/215/256/346/272/220/346/250/241/345/235/227/346/211/251/345/261/225.md +197 -0
  45. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/215/201/357/274/211/357/274/232/345/233/275/351/231/205/345/214/226/351/233/206/346/210/220.md +116 -0
  46. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/215/201/357/274/211/357/274/232/345/256/232/346/227/266/350/260/203/345/272/246/344/273/273/345/212/241.md +392 -0
  47. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/345/237/272/347/241/200/345/271/263/345/217/260-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/233/233/357/274/211/357/274/232/347/263/273/347/273/237/350/256/244/350/257/201/351/233/206/346/210/220.md +907 -0
  48. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/270/200/357/274/211/357/274/232/346/265/201/347/250/213API/346/216/245/345/217/243.md +2930 -0
  49. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/270/203/357/274/211/357/274/232/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241/350/257/264/346/230/216/346/226/207/346/241/243.md +730 -0
  50. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/270/211/357/274/211/357/274/232/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217/345/274/200/345/217/221.md +463 -0
  51. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/272/214/357/274/211/357/274/232/345/267/245/344/275/234/346/265/201/347/250/213/345/272/224/347/224/250/345/274/200/345/217/221.md +2429 -0
  52. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/344/272/224/357/274/211/357/274/232/345/276/205/345/212/236/345/220/214/346/255/245/351/227/250/346/210/267/345/274/200/345/217/221.md +270 -0
  53. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/205/253/357/274/211/357/274/232/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266/345/217/212/346/226/271/346/263/225/350/257/264/346/230/216/346/226/207/346/241/243.md +685 -0
  54. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/205/255/357/274/211/357/274/232/346/265/201/347/250/213/350/277/275/350/270/252/351/241/265/351/235/242/345/265/214/345/205/245/350/241/250/345/215/225/345/274/200/345/217/221.md +229 -0
  55. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/.bak//345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260-/346/265/201/347/250/213/347/256/241/347/220/206-/344/275/277/347/224/250/346/224/273/347/225/245/357/274/210/345/233/233/357/274/211/357/274/232/350/207/252/345/256/232/344/271/211/344/272/272/345/221/230.md +112 -0
  56. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/01_/347/233/256/345/275/225/344/270/216/346/226/207/346/241/243/347/273/223/346/236/204.md +97 -0
  57. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/02_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.1/347/274/223/345/255/230/346/223/215/344/275/234-SysCacheServiceFacade.md +423 -0
  58. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/03_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.1/347/274/223/345/255/230/346/223/215/344/275/234-StringCacheFacade.md +78 -0
  59. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/04_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.2/351/205/215/347/275/256/344/270/255/345/277/203-NacosUtils.md +193 -0
  60. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/05_/344/272/214/351/200/232/347/224/250/345/267/245/345/205/267-2.1/345/212/240/350/247/243/345/257/206-SM2-SM3-SM4.md +176 -0
  61. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/06_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.1/346/227/245/345/277/227/346/234/215/345/212/241-ILogPostService.md +323 -0
  62. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/07_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.1/346/227/245/345/277/227/346/263/250/350/247/243-LogDesc-LogOperation.md +210 -0
  63. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/08_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.3/344/274/232/350/257/235/344/277/241/346/201/257-SessionUtils.md +349 -0
  64. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/09_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.3/345/234/250/347/272/277/347/224/250/346/210/267-IUserOnlineTime.md +63 -0
  65. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/10_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.4/345/244/232/347/263/273/347/273/237/351/233/206/346/210/220+3.5/346/225/260/346/215/256/345/257/206/347/272/247.md +91 -0
  66. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/11_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.6/346/234/215/345/212/241/351/200/232/347/237/245-CloudFeignMessageClient.md +467 -0
  67. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/12_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.1/345/267/245/344/275/234/346/265/201BpmEngine.md +86 -0
  68. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/13_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.2/350/260/203/345/272/246/347/273/204/344/273/266ICloudClient.md +57 -0
  69. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/14_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.3/345/256/232/346/227/266/344/273/273/345/212/241IJobApi.md +55 -0
  70. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/15_/344/272/224/345/211/215/347/253/257/350/265/204/344/272/247-5.1UI/347/273/204/344/273/266/345/272/223-/344/270/212/345/215/212.md +514 -0
  71. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/16_/344/272/224/345/211/215/347/253/257/350/265/204/344/272/247-5.1UI/347/273/204/344/273/266/345/272/223-/344/270/213/345/215/212.md +302 -0
  72. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/17_/351/231/204/345/275/225-/347/273/237/350/256/241/346/261/207/346/200/273-Maven/344/276/235/350/265/226-/346/263/250/346/204/217/344/272/213/351/241/271.md +131 -0
  73. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/18_/347/233/256/345/275/225/344/270/216/346/226/207/346/241/243/350/257/264/346/230/216.md +310 -0
  74. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/19_1.1-1.6/345/237/272/347/241/200/351/205/215/347/275/256-/345/271/263/345/217/260/344/277/241/346/201/257/347/261/273.md +371 -0
  75. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/20_1.7-1.10/345/237/272/347/241/200/351/205/215/347/275/256-/351/241/265/351/235/242/344/270/216/346/266/210/346/201/257/347/261/273.md +344 -0
  76. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/21_1.11-1.15/345/237/272/347/241/200/351/205/215/347/275/256-/346/266/210/346/201/257/344/270/216/351/205/215/347/275/256/347/261/273.md +302 -0
  77. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/22_1.16/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245.md +326 -0
  78. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/23_1.17/350/265/204/346/272/220/346/225/260/346/215/256/345/257/206/347/272/247-/344/270/212/345/215/212.md +303 -0
  79. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/24_1.17/350/265/204/346/272/220/346/225/260/346/215/256/345/257/206/347/272/247-/344/270/213/345/215/212.md +355 -0
  80. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/25_2.1/347/273/204/347/273/207/347/273/264/346/212/244-/344/270/212/345/215/212.md +459 -0
  81. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/26_2.1/347/273/204/347/273/207/347/273/264/346/212/244-/344/270/213/345/215/212.md +567 -0
  82. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/27_2.2/344/272/272/345/221/230/347/273/264/346/212/244-/344/270/212/345/215/212.md +838 -0
  83. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/28_2.2/344/272/272/345/221/230/347/273/264/346/212/244-/344/270/213/345/215/212.md +585 -0
  84. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/29_2.3/350/247/222/350/211/262/347/273/264/346/212/244-/344/270/212/345/215/212.md +576 -0
  85. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/30_2.3/350/247/222/350/211/262/347/273/264/346/212/244-/344/270/213/345/215/212.md +597 -0
  86. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/31_2.4/347/224/250/346/210/267/347/273/264/346/212/244-/344/270/212/345/215/212.md +490 -0
  87. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/32_2.4/347/224/250/346/210/267/347/273/264/346/212/244-/344/270/213/345/215/212.md +560 -0
  88. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/33_2.5/345/267/245/344/275/234/347/273/204/347/273/264/346/212/244.md +209 -0
  89. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/34_2.6/345/205/266/344/273/226/346/216/245/345/217/243-/344/270/212/345/215/212.md +653 -0
  90. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/35_2.6/345/205/266/344/273/226/346/216/245/345/217/243-/344/270/213/345/215/212.md +591 -0
  91. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/36_3.1-3.7/350/265/204/346/272/220/346/216/210/346/235/203/345/237/272/347/241/200.md +827 -0
  92. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/37_3.8-3.10/350/265/204/346/272/220/346/216/210/346/235/203/350/277/233/351/230/266.md +458 -0
  93. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/38_3.11/345/237/272/347/241/200/346/225/260/346/215/256.md +210 -0
  94. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/39_3.12/346/225/260/346/215/256/346/272/220/347/273/264/346/212/244.md +277 -0
  95. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/40_3.13/347/254/254/344/270/211/346/226/271/350/265/204/346/272/220/347/273/264/346/212/244.md +310 -0
  96. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/41_3.14/346/234/215/345/212/241/347/256/241/347/220/206.md +521 -0
  97. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/42_3.15/350/265/204/346/272/220/347/273/264/346/212/244-/344/270/212/345/215/212.md +767 -0
  98. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/43_3.15/350/265/204/346/272/220/347/273/264/346/212/244-/344/270/213/345/215/212.md +378 -0
  99. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/44_3.16/344/272/272/345/221/230/351/200/211/346/213/251/345/231/250-/344/270/212/345/215/212.md +311 -0
  100. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/45_3.16/344/272/272/345/221/230/351/200/211/346/213/251/345/231/250-/344/270/213/345/215/212.md +242 -0
  101. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/46_3.17/345/241/253/346/212/245/346/212/245/350/241/250+3.18/351/252/214/350/257/201/347/240/201.md +178 -0
  102. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/47_3.19/345/267/245/344/275/234/345/217/260/347/273/264/346/212/244.md +196 -0
  103. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/48_3.20/350/260/203/345/272/246/347/274/226/346/216/222.md +106 -0
  104. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/49_/351/231/204/345/275/225-4.1-4.3/350/277/224/345/233/236/347/240/201/344/270/216/347/211/210/346/234/254/346/270/205/345/215/225.md +43 -0
  105. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/AGENTS.md +252 -0
  106. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/CLAUDE.md +252 -0
  107. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/README.md +230 -0
  108. package/skills/meritdata-dev-docs-file-finder/references/dev-docs/REQUIREMENT_DESIGN_REFERENCE.md +543 -0
  109. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-00_/346/200/273/350/247/210.md +198 -0
  110. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20201_/345/211/215/347/275/256/346/235/241/344/273/266.md +11 -0
  111. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20202_/350/247/204/345/210/231/345/274/225/346/223/216/345/210/235/345/247/213/345/214/226/346/216/245/345/217/243.md +263 -0
  112. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20203_/345/220/257/345/212/250/346/265/201/347/250/213/345/256/236/344/276/213/346/216/245/345/217/243.md +187 -0
  113. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20204_/350/277/220/350/241/214/350/247/204/345/210/231/345/274/225/346/223/216.md +449 -0
  114. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20205_/345/256/214/346/210/220/344/273/273/345/212/241/346/216/245/345/217/243.md +232 -0
  115. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20206_/345/241/253/345/206/231/346/204/217/350/247/201/346/216/245/345/217/243.md +192 -0
  116. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20207_/346/240/271/346/215/256/344/273/273/345/212/241/350/212/202/347/202/271/350/216/267/345/217/226/346/204/217/350/247/201/345/206/205/345/256/271.md +212 -0
  117. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20208_/346/237/245/347/234/213/350/277/275/350/270/252/346/216/245/345/217/243.md +492 -0
  118. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20209_/351/200/200/345/233/236/346/213/237/347/250/277/344/272/272/346/216/245/345/217/243.md +187 -0
  119. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20210_/351/200/200/345/233/236/344/270/212/344/270/200/347/216/257/350/212/202/345/244/204/347/220/206/344/272/272/346/216/245/345/217/243.md +183 -0
  120. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20211_/346/265/201/347/250/213/350/256/276/350/256/241/345/231/250/345/210/227/350/241/250/346/237/245/350/257/242.md +314 -0
  121. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20212_/344/270/252/344/272/272/345/276/205/345/212/236.md +261 -0
  122. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20213_/351/230/205/347/237/245.md +306 -0
  123. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20214_/346/265/201/347/250/213/346/234/200/346/226/260/345/256/232/344/271/211ID.md +100 -0
  124. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20215_/344/270/232/345/212/241/347/233/270/345/205/263/346/216/245/345/217/243.md +637 -0
  125. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20216_/346/265/201/347/250/213/345/210/206/347/261/273/347/233/270/345/205/263.md +176 -0
  126. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-00_/346/200/273/350/247/210.md +84 -0
  127. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20201_/346/240/267/344/276/213/350/257/264/346/230/216.md +37 -0
  128. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20202_/345/220/216/347/253/257/345/267/245/347/250/213/345/210/233/345/273/272.md +39 -0
  129. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20203_/345/220/216/347/253/257/345/267/245/347/250/213/351/205/215/347/275/256.md +234 -0
  130. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20204_/345/220/216/347/253/257/345/267/245/347/250/213/344/270/232/345/212/241/347/261/273/345/210/233/345/273/272.md +548 -0
  131. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20205_/345/220/257/345/212/250/345/220/216/347/253/257/345/272/224/347/224/250/345/267/245/347/250/213.md +49 -0
  132. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20206_/346/265/201/347/250/213/345/272/224/347/224/250/345/211/215/347/253/257/345/274/200/345/217/221.md +1443 -0
  133. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20207_/345/220/257/345/212/250/345/211/215/347/253/257/345/272/224/347/224/250/345/267/245/347/250/213.md +78 -0
  134. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20208_/346/265/201/347/250/213/350/256/276/350/256/241.md +98 -0
  135. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-00_/346/200/273/350/247/210.md +51 -0
  136. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20201_/345/256/236/347/216/260/347/255/226/347/225/245.md +30 -0
  137. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20202_/350/207/252/345/256/232/344/271/211_jar_/345/214/205/347/232/204/345/256/236/347/216/260/346/265/201/347/250/213.md +242 -0
  138. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20203_/350/207/252/345/256/232/344/271/211/346/234/215/345/212/241/346/220/255/345/273/272/357/274/210/350/213/245/345/267/262/345/255/230/345/234/250/345/267/245/347/250/213/345/222/214/346/216/245/345/217/243/357/274/214/346/255/244/346/255/245/351/252/244/345/217/257/347/234/201/347/225/245/357/274/211.md +150 -0
  139. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20204_/346/265/201/347/250/213/350/256/276/350/256/241/344/270/255/350/256/276/347/275/256_listener_/345/217/202/346/225/260.md +44 -0
  140. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20205_/346/265/213/350/257/225/350/247/246/345/217/221/346/265/201/347/250/213/347/233/221/345/220/254/344/272/213/344/273/266/346/230/257/345/220/246/347/224/237/346/225/210.md +42 -0
  141. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20206_/345/244/207/346/263/250/357/274/232.md +26 -0
  142. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-00_/346/200/273/350/247/210.md +47 -0
  143. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20201_/347/263/273/347/273/237/350/256/244/350/257/201/351/233/206/346/210/220/344/273/213/347/273/215.md +14 -0
  144. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20202_token_/350/256/244/350/257/201/351/233/206/346/210/220.md +568 -0
  145. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20203_cas_/347/273/237/344/270/200/350/256/244/350/257/201/344/270/255/345/277/203.md +128 -0
  146. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20204_/347/254/254/344/270/211/346/226/271/350/256/244/350/257/201/344/270/255/345/277/203.md +151 -0
  147. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20205_/351/231/204/345/275/225_1_/350/256/244/350/257/201/344/270/255/345/277/203/347/253/257/351/205/215/347/275/256.md +93 -0
  148. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-00_/346/200/273/350/247/210.md +25 -0
  149. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20201_/350/203/214/346/231/257.md +12 -0
  150. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20202_/345/267/245/344/275/234/346/265/201/347/233/270/345/205/263/344/273/213/347/273/215.md +28 -0
  151. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20203_/345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260/346/265/201/347/250/213/345/214/205/345/220/253/346/250/241/345/235/227.md +18 -0
  152. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20204_/346/265/201/347/250/213/345/212/237/350/203/275/346/250/241/345/235/227/344/273/213/347/273/215.md +284 -0
  153. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20205_/346/265/201/347/250/213/345/220/216/347/253/257/350/256/276/350/256/241.md +226 -0
  154. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20206_/346/265/201/347/250/213/345/211/215/347/253/257/350/256/276/350/256/241.md +80 -0
  155. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20207_/344/272/214/346/254/241/345/274/200/345/217/221.md +38 -0
  156. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20208_/344/270/252/344/272/272/346/240/267/344/276/213/346/265/201/347/250/213/347/232/204/351/205/215/347/275/256.md +92 -0
  157. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-00_/346/200/273/350/247/210.md +66 -0
  158. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20201_/346/246/202/350/277/260.md +165 -0
  159. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20202_/347/273/204/344/273/266/344/270/216/346/226/271/346/263/225/346/246/202/350/247/210/350/241/250.md +45 -0
  160. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20203_BpmFormTools_-_BPM/350/241/250/345/215/225/345/267/245/345/205/267/347/273/204/344/273/266.md +145 -0
  161. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20204_BpmGridButtonsNew_-_BPM/350/241/250/346/240/274/346/214/211/351/222/256/347/273/204/344/273/266.md +239 -0
  162. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20205_/345/220/216/347/253/257BpmEngine/346/240/270/345/277/203/346/216/245/345/217/243.md +135 -0
  163. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20206_/351/231/204/345/275/225.md +43 -0
  164. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-00_/346/200/273/350/247/210.md +59 -0
  165. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20201_/346/246/202/350/277/260.md +16 -0
  166. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20202_/347/273/204/347/273/207/345/220/214/346/255/245.md +318 -0
  167. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20203_/344/272/272/345/221/230/345/220/214/346/255/245.md +187 -0
  168. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20204_/350/265/204/346/272/220/350/217/234/345/215/225/345/220/214/346/255/245.md +124 -0
  169. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20205_/350/247/222/350/211/262/345/220/214/346/255/245.md +79 -0
  170. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20206_/350/265/204/346/272/220/346/235/203/351/231/220/345/220/214/346/255/245.md +116 -0
  171. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20207_/347/273/204/347/273/207/345/220/214/346/255/245/351/205/215/347/275/256.md +173 -0
  172. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-00_/346/200/273/350/247/210.md +49 -0
  173. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20201_/344/275/277/347/224/250/350/203/214/346/231/257.md +12 -0
  174. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20202_/346/233/264/346/226/260/350/256/260/345/275/225.md +14 -0
  175. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20203_/350/260/203/345/272/246/347/233/270/345/205/263/345/272/224/347/224/250/345/214/205.md +15 -0
  176. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20204_/351/205/215/347/275/256/351/241/271/347/233/270/345/205/263.md +23 -0
  177. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20205_/350/260/203/345/272/246/345/212/237/350/203/275/344/275/277/347/224/250.md +132 -0
  178. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20206_/350/260/203/345/272/246/344/273/273/345/212/241_API_/346/216/245/345/217/243.md +14 -0
  179. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20207_/345/257/271/345/244/226/350/260/203/345/272/246/344/273/273/345/212/241_API_/346/216/245/345/217/243.md +245 -0
  180. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-00_/346/200/273/350/247/210.md +49 -0
  181. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20201_/345/272/224/347/224/250/351/205/215/347/275/256/351/241/271/347/233/270/345/205/263.md +28 -0
  182. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20202_/351/205/215/347/275/256/344/270/255/345/277/203/351/205/215/347/275/256/351/241/271/350/257/264/346/230/216.md +876 -0
  183. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20203_/351/205/215/347/275/256/351/241/271/347/232/204/344/275/277/347/224/250.md +45 -0
  184. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-00_/346/200/273/350/247/210.md +56 -0
  185. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20201_/346/266/210/346/201/257/344/270/255/345/277/203/344/275/277/347/224/250/345/234/272/346/231/257.md +12 -0
  186. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20202_/346/266/210/346/201/257/344/270/255/345/277/203/351/241/265/351/235/242/345/212/237/350/203/275/344/275/277/347/224/250.md +396 -0
  187. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20203_/346/266/210/346/201/257/344/270/255/345/277/203/346/216/245/345/217/243/345/212/237/350/203/275/344/275/277/347/224/250.md +578 -0
  188. package/skills/meritdata-dev-docs-file-finder/references/dev-docs//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20204_/351/231/204/357/274/232/351/231/204/344/273/266/344/270/212/344/274/240/344/270/213/350/275/275/345/210/240/351/231/244/346/216/245/345/217/243.md +183 -0
  189. package/skills/meritdata-dev-docs-file-finder/references/keywords.md +153 -0
  190. package/skills/meritdata-dev-docs-file-finder/references/scenarios.md +313 -0
  191. package/skills/meritdata-nacos-importer/SKILL.md +37 -0
  192. package/skills/meritdata-nacos-importer/references/gray-publish.md +216 -0
  193. package/skills/meritdata-nacos-importer/references/guide.md +203 -0
  194. package/skills/meritdata-nacos-importer/references/yaml-spec.md +296 -0
  195. package/skills/meritdata-platform-2nd-dev-check/SKILL.md +38 -0
  196. package/skills/meritdata-platform-2nd-dev-check/references/ci-integration.md +307 -0
  197. package/skills/meritdata-platform-2nd-dev-check/references/guide.md +227 -0
  198. package/skills/meritdata-platform-2nd-dev-check/references/rules-checklist.md +250 -0
  199. package/skills/meritdata-platform-backend-deploy/SKILL.md +45 -0
  200. package/skills/meritdata-platform-backend-deploy/references/guide.md +255 -0
  201. package/skills/meritdata-platform-backend-deploy/references/health-monitor-log.md +325 -0
  202. package/skills/meritdata-platform-backend-deploy/references/release-strategies.md +256 -0
  203. package/skills/meritdata-platform-bpm/SKILL.md +39 -0
  204. package/skills/meritdata-platform-bpm/references/bpm-/346/224/273/347/225/245/INDEX.md +140 -0
  205. package/skills/meritdata-platform-bpm/references/guide.md +204 -0
  206. package/skills/meritdata-platform-bpm/references/status-mapping.md +36 -0
  207. package/skills/meritdata-platform-cache/SKILL.md +42 -0
  208. package/skills/meritdata-platform-cache/references/distributed-lock.md +199 -0
  209. package/skills/meritdata-platform-cache/references/guide.md +141 -0
  210. package/skills/meritdata-platform-cache/references/key-design.md +167 -0
  211. package/skills/meritdata-platform-cache/references/resilience.md +181 -0
  212. package/skills/meritdata-platform-cloud-dev/SKILL.md +81 -0
  213. package/skills/meritdata-platform-cloud-dev/references/modules-mapping.md +162 -0
  214. package/skills/meritdata-platform-cloud-dev/references/scenario-contract.md +75 -0
  215. package/skills/meritdata-platform-cloud-dev/references/skill-suite.json +52 -0
  216. package/skills/meritdata-platform-cloud-dev/references/skill-suite.schema.json +23 -0
  217. package/skills/meritdata-platform-code-review/SKILL.md +42 -0
  218. package/skills/meritdata-platform-code-review/references/guide.md +173 -0
  219. package/skills/meritdata-platform-code-review/references/performance.md +263 -0
  220. package/skills/meritdata-platform-code-review/references/security.md +278 -0
  221. package/skills/meritdata-platform-code-spec/SKILL.md +36 -0
  222. package/skills/meritdata-platform-code-spec/references/anti-patterns.md +533 -0
  223. package/skills/meritdata-platform-code-spec/references/validate-rules.md +321 -0
  224. package/skills/meritdata-platform-data-access/SKILL.md +131 -0
  225. package/skills/meritdata-platform-data-access/references/datasource.md +239 -0
  226. package/skills/meritdata-platform-data-access/references/inbound/adapter-pattern.md +431 -0
  227. package/skills/meritdata-platform-data-access/references/inbound/canonical-payload.md +313 -0
  228. package/skills/meritdata-platform-data-access/references/inbound/reconciliation.md +352 -0
  229. package/skills/meritdata-platform-data-access/references/inbound/sync-contracts.md +225 -0
  230. package/skills/meritdata-platform-data-access/references/inbound/xml-security.md +411 -0
  231. package/skills/meritdata-platform-data-access/references/outbound/batch-assembly.md +251 -0
  232. package/skills/meritdata-platform-data-access/references/outbound/dto-catalog.md +120 -0
  233. package/skills/meritdata-platform-data-access/references/outbound/dto-converter.md +211 -0
  234. package/skills/meritdata-platform-data-access/references/outbound/feign-guide.md +229 -0
  235. package/skills/meritdata-platform-data-access/references/outbound/querydsl-guide.md +177 -0
  236. package/skills/meritdata-platform-data-access/references/outbound/same-jvm-detection.md +157 -0
  237. package/skills/meritdata-platform-data-access/references/outbound/service-catalog.md +232 -0
  238. package/skills/meritdata-platform-data-access/references/outbound/third-party.md +278 -0
  239. package/skills/meritdata-platform-data-access/references/outbound/usage-patterns.md +257 -0
  240. package/skills/meritdata-platform-data-access/references/outbound/webapi.md +392 -0
  241. package/skills/meritdata-platform-data-access-review/SKILL.md +42 -0
  242. package/skills/meritdata-platform-data-access-review/references/anti-patterns.md +287 -0
  243. package/skills/meritdata-platform-data-access-review/references/ci-scan.md +225 -0
  244. package/skills/meritdata-platform-data-access-review/references/guide.md +228 -0
  245. package/skills/meritdata-platform-data-boundary/SKILL.md +41 -0
  246. package/skills/meritdata-platform-data-boundary/references/anti-patterns.md +519 -0
  247. package/skills/meritdata-platform-data-boundary/references/cloud-tables.md +32 -0
  248. package/skills/meritdata-platform-data-boundary/references/same-jvm.md +52 -0
  249. package/skills/meritdata-platform-data-boundary/references/validate-rules.md +341 -0
  250. package/skills/meritdata-platform-data-classification/SKILL.md +42 -0
  251. package/skills/meritdata-platform-data-classification/references/guide.md +179 -0
  252. package/skills/meritdata-platform-data-classification/references/hibernate-filter.md +255 -0
  253. package/skills/meritdata-platform-data-classification/references/integration-with-dam.md +206 -0
  254. package/skills/meritdata-platform-data-classification/references/masking.md +214 -0
  255. package/skills/meritdata-platform-domain-model/SKILL.md +41 -0
  256. package/skills/meritdata-platform-domain-model/references/anti-patterns.md +538 -0
  257. package/skills/meritdata-platform-domain-model/references/relationship-patterns.md +112 -0
  258. package/skills/meritdata-platform-domain-model/references/review-checklist.md +39 -0
  259. package/skills/meritdata-platform-domain-model/references/validate-rules.md +305 -0
  260. package/skills/meritdata-platform-file/SKILL.md +100 -0
  261. package/skills/meritdata-platform-file/references/acceptance.md +393 -0
  262. package/skills/meritdata-platform-file/references/api-contracts.md +392 -0
  263. package/skills/meritdata-platform-file/references/examples.md +421 -0
  264. package/skills/meritdata-platform-file/references/lifecycle.md +345 -0
  265. package/skills/meritdata-platform-file/references/security.md +423 -0
  266. package/skills/meritdata-platform-frontend/SKILL.md +45 -0
  267. package/skills/meritdata-platform-frontend/references/auth-and-api.md +300 -0
  268. package/skills/meritdata-platform-frontend/references/components.md +284 -0
  269. package/skills/meritdata-platform-frontend/references/http-client/INDEX.md +85 -0
  270. package/skills/meritdata-platform-frontend/references/http-client/acceptance.md +348 -0
  271. package/skills/meritdata-platform-frontend/references/http-client/gateway-paths.md +281 -0
  272. package/skills/meritdata-platform-frontend/references/http-client/http-plugin.md +293 -0
  273. package/skills/meritdata-platform-frontend/references/http-client/service-registry.md +281 -0
  274. package/skills/meritdata-platform-frontend/references/project-structure.md +318 -0
  275. package/skills/meritdata-platform-frontend-deploy/SKILL.md +45 -0
  276. package/skills/meritdata-platform-frontend-deploy/references/cdn-https-cache.md +222 -0
  277. package/skills/meritdata-platform-frontend-deploy/references/gray-and-rollback.md +236 -0
  278. package/skills/meritdata-platform-frontend-deploy/references/guide.md +199 -0
  279. package/skills/meritdata-platform-impexp/SKILL.md +41 -0
  280. package/skills/meritdata-platform-impexp/references/async-and-validate.md +353 -0
  281. package/skills/meritdata-platform-impexp/references/excel-guide.md +326 -0
  282. package/skills/meritdata-platform-impexp/references/scenarios.md +248 -0
  283. package/skills/meritdata-platform-job/SKILL.md +41 -0
  284. package/skills/meritdata-platform-job/references/idempotency.md +203 -0
  285. package/skills/meritdata-platform-job/references/scenarios.md +317 -0
  286. package/skills/meritdata-platform-job/references/scheduling-/346/224/273/347/225/245/INDEX.md +60 -0
  287. package/skills/meritdata-platform-job/references/xxl-job-guide.md +286 -0
  288. package/skills/meritdata-platform-lookup-api/SKILL.md +42 -0
  289. package/skills/meritdata-platform-lookup-api/references/cache-strategy.md +199 -0
  290. package/skills/meritdata-platform-lookup-api/references/guide.md +179 -0
  291. package/skills/meritdata-platform-lookup-api/references/tree-and-i18n.md +198 -0
  292. package/skills/meritdata-platform-menu-config/SKILL.md +42 -0
  293. package/skills/meritdata-platform-menu-config/references/guide.md +164 -0
  294. package/skills/meritdata-platform-menu-config/references/i18n-and-cache.md +180 -0
  295. package/skills/meritdata-platform-menu-config/references/role-and-tree.md +170 -0
  296. package/skills/meritdata-platform-menu-resource/SKILL.md +42 -0
  297. package/skills/meritdata-platform-menu-resource/references/auth-and-path.md +166 -0
  298. package/skills/meritdata-platform-menu-resource/references/guide.md +156 -0
  299. package/skills/meritdata-platform-menu-resource/references/scan-and-cache.md +197 -0
  300. package/skills/meritdata-platform-message-center/SKILL.md +42 -0
  301. package/skills/meritdata-platform-message-center/references/channels.md +222 -0
  302. package/skills/meritdata-platform-message-center/references/guide.md +151 -0
  303. package/skills/meritdata-platform-message-center/references/message-/346/224/273/347/225/245/INDEX.md +55 -0
  304. package/skills/meritdata-platform-message-center/references/reliability.md +208 -0
  305. package/skills/meritdata-platform-nacos-config/SKILL.md +44 -0
  306. package/skills/meritdata-platform-nacos-config/references/config-item-/346/224/273/347/225/245/INDEX.md +53 -0
  307. package/skills/meritdata-platform-nacos-config/references/configuration-properties.md +295 -0
  308. package/skills/meritdata-platform-nacos-config/references/dynamic-refresh.md +156 -0
  309. package/skills/meritdata-platform-nacos-config/references/encryption.md +182 -0
  310. package/skills/meritdata-platform-nacos-config/references/env-and-gray.md +178 -0
  311. package/skills/meritdata-platform-nacos-config/references/guide.md +127 -0
  312. package/skills/meritdata-platform-operation-log/SKILL.md +42 -0
  313. package/skills/meritdata-platform-operation-log/references/guide.md +175 -0
  314. package/skills/meritdata-platform-operation-log/references/query-and-export.md +218 -0
  315. package/skills/meritdata-platform-operation-log/references/sensitive-and-async.md +176 -0
  316. package/skills/meritdata-platform-org-user-api/SKILL.md +42 -0
  317. package/skills/meritdata-platform-org-user-api/references/guide.md +230 -0
  318. package/skills/meritdata-platform-org-user-api/references/masterdata-sync-/346/224/273/347/225/245/INDEX.md +64 -0
  319. package/skills/meritdata-platform-org-user-api/references/soft-delete-pitfalls.md +200 -0
  320. package/skills/meritdata-platform-org-user-api/references/tree-and-picker.md +176 -0
  321. package/skills/meritdata-platform-permission/SKILL.md +42 -0
  322. package/skills/meritdata-platform-permission/references/button-and-data.md +198 -0
  323. package/skills/meritdata-platform-permission/references/custom-rule.md +207 -0
  324. package/skills/meritdata-platform-permission/references/guide.md +196 -0
  325. package/skills/meritdata-platform-platform-config/SKILL.md +43 -0
  326. package/skills/meritdata-platform-platform-config/references/basic-config-api.md +221 -0
  327. package/skills/meritdata-platform-platform-config/references/cache-and-persist.md +234 -0
  328. package/skills/meritdata-platform-platform-config/references/guide.md +225 -0
  329. package/skills/meritdata-platform-platform-config/references/multi-tenant-and-audit.md +254 -0
  330. package/skills/meritdata-platform-playbook/SKILL.md +44 -0
  331. package/skills/meritdata-platform-playbook/references/flows.md +186 -0
  332. package/skills/meritdata-platform-playbook/references/intent-routing.md +180 -0
  333. package/skills/meritdata-platform-session/SKILL.md +42 -0
  334. package/skills/meritdata-platform-session/references/guide.md +157 -0
  335. package/skills/meritdata-platform-session/references/multi-device.md +149 -0
  336. package/skills/meritdata-platform-session/references/online-monitor.md +195 -0
  337. package/skills/meritdata-platform-sm-crypto/SKILL.md +41 -0
  338. package/skills/meritdata-platform-sm-crypto/references/guide.md +144 -0
  339. package/skills/meritdata-platform-sm-crypto/references/key-management.md +177 -0
  340. package/skills/meritdata-platform-sm-crypto/references/migration.md +181 -0
  341. package/skills/meritdata-platform-sso/SKILL.md +41 -0
  342. package/skills/meritdata-platform-sso/references/filter-config.md +391 -0
  343. package/skills/meritdata-platform-sso/references/oauth-providers.md +290 -0
  344. package/skills/meritdata-platform-sso/references/sso-guide.md +319 -0
  345. package/skills/meritdata-platform-test-case/SKILL.md +43 -0
  346. package/skills/meritdata-platform-test-case/references/guide.md +290 -0
  347. package/skills/meritdata-platform-test-case/references/integration-test.md +352 -0
  348. package/skills/meritdata-platform-test-case/references/unit-test.md +330 -0
  349. package/skills/meritdata-platform-ui-components/SKILL.md +43 -0
  350. package/skills/meritdata-platform-ui-components/references/business-wrappers.md +233 -0
  351. package/skills/meritdata-platform-ui-components/references/guide.md +199 -0
  352. package/skills/meritdata-platform-ui-components/references/theme-and-i18n.md +226 -0
  353. package/tools/skill-authoring-workflow/README.md +260 -0
  354. package/tools/skill-authoring-workflow/templates/SKILL-template.md +35 -0
  355. package/tools/skill-authoring-workflow/templates/references-template.md +59 -0
  356. package/tools/skill-stocktake/README.md +121 -0
  357. package/tools/skill-stocktake/run.sh +153 -0
  358. package/tools/skill-vetter/README.md +119 -0
  359. package/tools/skill-vetter/run.sh +294 -0
@@ -0,0 +1,907 @@
1
+ ---
2
+ title: 应用开发平台使用攻略(四):系统认证集成
3
+ date: 2023.03.30
4
+ categories:
5
+ - 开发攻略
6
+ - C6.9.0
7
+ ---
8
+
9
+ # 应用开发平台使用攻略(四):系统认证集成
10
+
11
+ ## 1 系统认证集成介绍
12
+
13
+ 针对不同项目集成场景的不同,平台目前提供三种集成方式: token 认证,Cas 统一认证中心,第三方认证中心。
14
+
15
+ - token 认证:目前平台提供两种登录方式,分别为平台默认 token 登录、自定义 token 登录。
16
+
17
+ ## 2 token 认证集成
18
+
19
+ ### 2.1 token 集成适用场景
20
+
21
+ 平台中的页面或接口通过其他系统直接访问,或将平台中的页面直接嵌入到其他系统中而未通过统一认证中心进行登录时可通过 userId+token 方式进行登录
22
+
23
+ ### 2.2 集成前置操作
24
+
25
+ - 根据应用开发平台使用攻略(三):组织人员同步完成平台的组织人员同步
26
+
27
+ ### 2.3 集成操作
28
+
29
+ 如果要使用 token 认证集成,通常有两种应用场景
30
+
31
+ - 1.平台默认 token 登录:使用平台默认方式进行校验登录;
32
+ - 2.自定义 token 登录:为了满足其他系统自有的加密校验,应用开发平台提供了自定义 token 登录方式。
33
+
34
+ #### 2.3.1 平台默认 token 登录
35
+
36
+ 为了完成应用开发平台和其他系统进行单点集成,应用开发平台不做修改,其他系统通过传递 userId+token 方式进行集成登录。
37
+
38
+ - 操作步骤:
39
+ 新建 java 应用(如果是适配微服务6.13版本,则使用jdk21),如图:
40
+ ![image](./imgs/系统认证集成/token集成/3-1.png)
41
+ 选择 maven,直接 next
42
+ ![image](./imgs/系统认证集成/token集成/3-2.png)
43
+ 可按示例内容填入:
44
+ ![image](./imgs/系统认证集成/token集成/3-3.png)
45
+
46
+ 继续按图示操作:
47
+ ![image](./imgs/系统认证集成/token集成/3-4.png)
48
+ ![image](./imgs/系统认证集成/token集成/3-5.png)
49
+
50
+ 继续修改 pom 文件
51
+ 将 pom.xml 内容替换为(目的为了导入 RSAUTils 所需 jar 包):
52
+
53
+ ```xml
54
+ <?xml version="1.0" encoding="UTF-8"?>
55
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
56
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
57
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
58
+ <modelVersion>4.0.0</modelVersion>
59
+
60
+ <groupId>com.meritdata.cloud</groupId>
61
+ <artifactId>project-business-token</artifactId>
62
+ <version>1.0-SNAPSHOT</version>
63
+ <dependencies>
64
+ <dependency>
65
+ <groupId>commons-codec</groupId>
66
+ <artifactId>commons-codec</artifactId>
67
+ <version>1.11</version>
68
+ </dependency>
69
+ </dependencies>
70
+ </project>
71
+ ```
72
+
73
+ - 集成 token 后端应用结构:
74
+
75
+ 进行两个类的创建,分别为 RSAUtils 和 SSOMain。
76
+ RSAUtils 工具类(将整个类内容替换即可):
77
+
78
+ ```java
79
+ import org.apache.commons.codec.binary.Base64;
80
+
81
+ import javax.crypto.Cipher;
82
+ import java.io.File;
83
+ import java.io.FileInputStream;
84
+ import java.io.ObjectInputStream;
85
+ import java.security.Key;
86
+
87
+ public class RSAUtils {
88
+ private static String ALGORITHM = "RSA";
89
+ public static int KEYSIZE = 1024;
90
+ public static String ENCODE = "UTF-8";
91
+ public static String encrypt(String source, String path) throws Exception {
92
+ ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path + File.separator +"public.pem"));
93
+ Key key = (Key) ois.readObject();
94
+ ois.close();
95
+ Cipher cipher = Cipher.getInstance(ALGORITHM);
96
+ cipher.init(1, key);
97
+ byte[] b = source.getBytes();
98
+ byte[] b1 = cipher.doFinal(b);
99
+ return new String(Base64.encodeBase64(b1), ENCODE);
100
+ }
101
+ }
102
+ ```
103
+
104
+ - 平台中对 token 的生成方式进行升级,采用非对称的 RSA 加密方法,提供公钥证书生成 token(公钥证书随平台发放,文件名为 public.pem),可以通过以下代码来获取用户的 token 信息:
105
+ SSOMain(将整个类内容替换即可) :
106
+
107
+ ```java
108
+ import java.text.SimpleDateFormat;
109
+ import java.util.Date;
110
+ public class SSOMain {
111
+
112
+ public static void main(String[] args) throws Exception {
113
+ String cloudHome = "D://8.0.0//run//merit_cloud//key"; //public.pem的文件存储路径(公钥地址)
114
+ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
115
+ String userId = "admin";// 以admin为例
116
+ String token= RSAUtils.encrypt(sdf.format(new Date())+userId,cloudHome);
117
+ System.out.println(token);
118
+ }
119
+ }
120
+ ```
121
+
122
+ - 该 userId 必须为平台中已存在的用户,如果暂时只是作为功能体验,使用 admin 更稳妥一些。
123
+
124
+ ```
125
+ String userId = "admin";// 以admin为例
126
+ ```
127
+
128
+ 结构图:
129
+ ![image](./imgs/系统认证集成/token集成/3-6.png)
130
+
131
+ 在 SSOMain 中运行项目,鼠标右键启动,如图:
132
+ ![image](./imgs/系统认证集成/token集成/3-7.png)
133
+ 生成的 token 打印在控制台,如图所示:
134
+ ![image](./imgs/系统认证集成/token集成/3-8.png)
135
+
136
+ - 平台 token 登录展示
137
+
138
+ 使用 userId 和程序生成的 token 值进行登录<br>
139
+ 格式:http://服务ip地址:Nginx端口号/portal/#/?userId=登录用户名&token=生成的token值<br>
140
+ 例如:http://191.168.2.90:8080/portal/#/?userId=merit&token=kK+7QHYuVHToVyYch0ksOCn6isbaDIx6/6ftcSumS247lRkKTIhb4+0kyGr9JTVHRqU8/LGOrcBVAJxSdRstIDzPwpks/wfLiLnISEue4MFqMskmDip6yU++InrDobIuaqL2ycQRkJMJsHUal7jLHl/cRMnKtgnCUdc0R1N2RBo=
141
+
142
+ 如图:
143
+ ![image](./imgs/系统认证集成/token集成/3-9.png)
144
+ 认证成功后跳转如图:
145
+ ![image](./imgs/系统认证集成/token集成/3-10.png)
146
+
147
+ #### 2.3.2 自定义 token 单点登录(内置服务,推荐使用)
148
+
149
+ - 简述:
150
+ 除了上述第一种平台提供的默认单点登录方式外,还可以自定义 token 单点集成,可根据在请求中传递的用户标识信息生成 token 后进行请求访问。应用开发平台为分布式架构。实现自定义单点登录方式需要在业务应用中实现 com.meritdata.cloud.security.sso.IPortalSSOApi 接口类,返回所需的数据格式,返回数据中包含了用户名信息和 token 信息。系统在访问非匿名请求在进行会话信息校验之前,会跳转至该接口进行处理。如果正确返回了用户信息和 token,则会生成会话信息,直接访问接口。
151
+ - 操作步骤: 1.使用 IntelliJ IDEA 新建一个 Maven 工程;按照工程创建操作步骤,生成后端工程;创建CustomSSOApi类,写入对应的内容,编译后将其嵌入到应用工程中,重新启动应用工程;
152
+ 根据《应用开发平台使用攻略(一):系统环境搭建》 的后端工程创建,进行后端工程搭建。
153
+ 创建 project-business-sso 工程
154
+
155
+ 工程创建完毕后的目录结构如图所示:
156
+ ![image](./imgs/系统认证集成/token集成/3-11.jpg)
157
+
158
+ pom.xml 文件
159
+
160
+ ```xml
161
+ <?xml version="1.0" encoding="UTF-8"?>
162
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
163
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
164
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
165
+ <modelVersion>4.0.0</modelVersion>
166
+
167
+ <parent>
168
+ <artifactId>cloud-starter-parent</artifactId>
169
+ <groupId>com.meritdata.cloud</groupId>
170
+ <version>C.6.9.0</version>
171
+ </parent>
172
+ <groupId>com.meritdata.cloud</groupId>
173
+ <!--服务名称,可自拟-->
174
+ <artifactId>project-business-sso</artifactId>
175
+ <version>1.0-SNAPSHOT</version>
176
+
177
+ <dependencies>
178
+ <dependency>
179
+ <groupId>com.meritdata.cloud</groupId>
180
+ <artifactId>cloud-starter-core</artifactId>
181
+ <version>C.6.9.0</version>
182
+ </dependency>
183
+ <dependency>
184
+ <groupId>commons-codec</groupId>
185
+ <artifactId>commons-codec</artifactId>
186
+ <version>1.11</version>
187
+ </dependency>
188
+ </dependencies>
189
+ <build>
190
+ <plugins>
191
+ <plugin>
192
+ <groupId>net.alchim31.maven</groupId>
193
+ <artifactId>yuicompressor-maven-plugin</artifactId>
194
+ <version>1.3.0</version>
195
+ <executions>
196
+ <execution>
197
+ <phase>prepare-package</phase>
198
+ <goals>
199
+ <goal>compress</goal>
200
+ </goals>
201
+ </execution>
202
+ </executions>
203
+ <configuration>
204
+ <encoding>UTF-8</encoding>
205
+ <jswarn>false</jswarn>
206
+ <nosuffix>true</nosuffix>
207
+ <linebreakpos>-1</linebreakpos>
208
+ <force>true</force>
209
+ <includes>
210
+ <include>**/*.css</include>
211
+ <include>**/*.js</include>
212
+ </includes>
213
+ </configuration>
214
+ </plugin>
215
+ </plugins>
216
+ </build>
217
+ ```
218
+
219
+ 2.集成 token 后端应用结构:
220
+ (1)在 com.meritdata.cloud 包下新建 package,命名:security.sso.token;
221
+ (2)创建单点登录集成实现类:
222
+ 在 security.sso.token 下新建类,命名:CustomSSOApi
223
+
224
+ CustomSSOApi(将整个类内容替换即可) :
225
+
226
+ ```java
227
+ package com.meritdata.cloud.security.sso.token;
228
+
229
+
230
+ import com.meritdata.cloud.security.sso.IPortalSSOApi;
231
+ import com.meritdata.cloud.utils.RSAUtils;
232
+ import org.slf4j.Logger;
233
+ import org.slf4j.LoggerFactory;
234
+ import org.springframework.beans.factory.annotation.Value;
235
+ import org.springframework.web.bind.annotation.RequestParam;
236
+ import org.springframework.web.bind.annotation.RestController;
237
+
238
+ import java.io.*;
239
+ import java.text.SimpleDateFormat;
240
+ import java.util.Date;
241
+ import java.util.Map;
242
+
243
+
244
+ @RestController
245
+ public class CustomSSOApi implements IPortalSSOApi {
246
+
247
+ private static Logger logger = LoggerFactory.getLogger(CustomSSOApi.class);
248
+
249
+ @Value("${CLOUD_HOME}")
250
+ private String cloudHome; //公钥public.pem路径
251
+
252
+ @Override
253
+ public String[] getUserIdAndToken(@RequestParam(required = false) Map param) throws Exception {
254
+ logger.info("--------进入getUserIdAndToken------------");
255
+ String[] userToken = new String[2];
256
+ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
257
+ String userId = String.valueOf(param.get("userId"));//从request中获取用户标识后生成userId信息
258
+ String token= RSAUtils.encrypt(sdf.format(new Date())+userId,cloudHome + File.separator + "key");
259
+ userToken[0] = userId;
260
+ userToken[1] = token;
261
+ logger.info("--------userId------------" + userId);
262
+ logger.info("--------token------------" + token);
263
+ logger.info("--------结束------------");
264
+ return userToken;
265
+ }
266
+ }
267
+ ```
268
+
269
+ RSAUtils 工具类应用开发平台已经提供,可直接引用。
270
+
271
+ RSAUtils 内容如下:
272
+
273
+ ```java
274
+ package com.meritdata.cloud.security.sso.token;
275
+
276
+ import org.apache.commons.codec.binary.Base64;
277
+
278
+ import javax.crypto.Cipher;
279
+ import java.io.File;
280
+ import java.io.FileInputStream;
281
+ import java.io.ObjectInputStream;
282
+ import java.security.Key;
283
+
284
+ public class RSAUtils {
285
+ private static String ALGORITHM = "RSA";
286
+ public static int KEYSIZE = 1024;
287
+ public static String ENCODE = "UTF-8";
288
+ public static String encrypt(String source, String path) throws Exception {
289
+ ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path + File.separator +"public.pem"));
290
+ Key key = (Key) ois.readObject();
291
+ ois.close();
292
+ Cipher cipher = Cipher.getInstance(ALGORITHM);
293
+ cipher.init(1, key);
294
+ byte[] b = source.getBytes();
295
+ byte[] b1 = cipher.doFinal(b);
296
+ return new String(Base64.encodeBase64(b1), ENCODE);
297
+ }
298
+ }
299
+ ```
300
+
301
+ 工程创建完成后结构如图:
302
+ ![image](./imgs/系统认证集成/token集成/3-13.jpg)
303
+
304
+ 实现以上步骤之后,将项目编译,然后将编译后的文件target下面的CustomSSOApi.class,(完整路径为cloud.meritdata.cloud\security\sso\token\CustomSSOApi.class复制,建议在文件夹下复制。
305
+
306
+ ![image](./imgs/系统认证集成/token集成/3-13-1.jpg)
307
+
308
+ - 配置项管理配置 :
309
+
310
+ Nacos 中 common.properties 中需要修改配置自定义 token 认证接口类。此处的配置为业务应用的 spring.application.name 的值
311
+ 如图: ![image](./imgs/系统认证集成/token集成/3-14.png)
312
+
313
+ ```
314
+ #自定义认证token接口类应用名,实现自定义token认证
315
+ meritdata.cloud.custom-sso-application-name=none
316
+ ```
317
+
318
+ 如果希望自定义工程,这里将默认值更改,在 Nacos 中改为需要嵌入的工程服务名即可,例如:
319
+
320
+ ```
321
+ meritdata.cloud.custom-sso-application-name=cloud-system-manage
322
+ ```
323
+
324
+ 如图:修改后,点击发布
325
+ ![image](./imgs/系统认证集成/token集成/3-15.png)
326
+
327
+ 将 security\sso\token\CustomSSOApi.class放到所需要嵌入的工程服务下:
328
+ 本案例中放在 manage 中:apps\system\server\manage\WEB-INF\classes\com\meritdata\cloud 中,完整路径为:apps\system\server\manage\WEB-INF\classes\com\meritdata\cloud\security\sso\token\CustomSSOApi.class
329
+
330
+ - 重新启动 cloud-system-gateway 服务
331
+ - 重新启动 cloud-system-manage 服务
332
+
333
+ * 自定义 token 登录展示
334
+ 在自定义接口 CustomSSOApi 中制定加密逻辑,目前没有进行加密,只需要使用 userId 进行登录即可进行访问:
335
+ 格式:http://服务ip地址:Nginx端口号/portal#/?userId=登录用户名<br>
336
+ * 这里使用的登录用户名必须为已在应用开发平台完成新建
337
+ 例如:http://127.0.0.1:8080/portal/#/?userId=admin
338
+
339
+ 注意服务器 ip:查看 Nacos 中 common.properties 文件中 meritdata.cloud.server.ip 值
340
+ 如下图所示:
341
+
342
+ ![image](./imgs/系统认证集成/token集成/3-16.png)
343
+
344
+ 进行访问:
345
+ ![image](./imgs/系统认证集成/token集成/3-17.png)
346
+ 成功后跳转如图:
347
+ ![image](./imgs/系统认证集成/token集成/3-10.png)
348
+
349
+ #### 2.3.3 自定义 token 单点登录(独立服务)
350
+
351
+ - 简述:
352
+ 除了上述第一种平台提供的默认单点登录方式外,还可以自定义 token 单点集成,可根据在请求中传递的用户标识信息生成 token 后进行请求访问。应用开发平台为分布式架构。实现自定义单点登录方式需要在业务应用中实现 com.meritdata.cloud.security.sso.IPortalSSOApi 接口类,返回所需的数据格式,返回数据中包含了用户名信息和 token 信息。系统在访问非匿名请求在进行会话信息校验之前,会跳转至该接口进行处理。如果正确返回了用户信息和 token,则会生成会话信息,直接访问接口。
353
+ - 操作步骤: 1.使用 IntelliJ IDEA 新建一个 Maven 工程;按照工程创建操作步骤,生成后端工程;修改相关配置信息;加载依赖包,启动工程,nacos 中查看。
354
+ 根据《应用开发平台使用攻略(一):系统环境搭建》 的后端工程创建,进行后端工程搭建。
355
+ 创建 project-base-demo 工程
356
+
357
+ 工程创建完毕后的目录结构如图所示:
358
+ ![image](./imgs/系统认证集成/token集成/3-11.PNG)
359
+
360
+ - 后端工程配置
361
+ 点击工程名选择编辑配置,配置 key 路径,更改为自己的本地 key 路径即可
362
+ - ![image](./imgs/系统认证集成/token集成/3-18.png)
363
+ ![image](./imgs/系统认证集成/token集成/3-19.png)
364
+
365
+ 注:
366
+
367
+ -DCLOUD_HOME=D:/merit_cloud_run/windows/merit_cloud(具体路径以实际存放key为准)
368
+ -Dmeritdata.cloud.authentication-server-url=${CLOUD_HOME}/key
369
+ -Dspring.main.allow-circular-references=true
370
+
371
+ 修改 bootstrap.properties 文件
372
+
373
+ 在 src 目录->resources 目录-> bootstrap.properties 文件
374
+ 修改 server.port = 8099
375
+ 防止端口冲突
376
+
377
+ 完整配置信息如下:
378
+
379
+ ```properties
380
+ #启动端口
381
+ server.port=8099
382
+ #nacos的启动地址,在nacos的启动日志中查看
383
+ meritdata.cloud.nacos-addr=127.0.0.1:8848
384
+ spring.cloud.nacos.config.server-addr=${meritdata.cloud.nacos-addr}
385
+ spring.cloud.nacos.discovery.server-addr=${meritdata.cloud.nacos-addr}
386
+ #程序加载的配置文件
387
+ #服务启动的时候会读取 prefix.properties 和 prefix-profiles.properties 文件下的配置项
388
+ spring.profiles.include=server,cache,freemarker,datasource,sentinel,cloud-system-cas,oauth2,@project.artifactId@
389
+ spring.cloud.nacos.config.prefix=common
390
+ #nacos的配置的命名空间,默认为空
391
+ spring.cloud.nacos.config.namespace=
392
+ #系统的程序名,在创建工程的时候确定,挂载到nacos中的名称
393
+ spring.application.name=project-base-demo
394
+ meritdata.cloud.product-name=cloud-system-framework
395
+ spring.main.allow-bean-definition-overriding=true
396
+ #日志文件最长保存添加
397
+ logfile-max-history=30
398
+ #应用日志级别
399
+ logging-level=info
400
+ ```
401
+
402
+ 2.集成 token 后端应用结构:
403
+ (1)在 com.meritdata.cloud 包下新建 package,命名:security.sso.token;
404
+ (2)在包下新建 RSAUtils 工具类,该类和平台 token 默认登录的工具类一致,命名为 RSAUtils;
405
+ (3)创建单点登录集成实现类:
406
+ 在 security.sso.token 下新建类,命名:CustomSSOApi
407
+
408
+ CustomSSOApi(将整个类内容替换即可) :
409
+
410
+ ```java
411
+ package com.meritdata.cloud.security.sso.token;
412
+
413
+ import com.meritdata.cloud.security.sso.IPortalSSOApi;
414
+ import com.meritdata.cloud.utils.RSAUtils;
415
+ import org.slf4j.Logger;
416
+ import org.slf4j.LoggerFactory;
417
+ import org.springframework.beans.factory.annotation.Value;
418
+ import org.springframework.web.bind.annotation.RequestParam;
419
+ import org.springframework.web.bind.annotation.RestController;
420
+ import java.io.*;
421
+ import java.text.SimpleDateFormat;
422
+ import java.util.Date;
423
+ import java.util.Map;
424
+
425
+
426
+ @RestController
427
+ public class CustomSSOApi implements IPortalSSOApi {
428
+
429
+ private static Logger logger = LoggerFactory.getLogger(CustomSSOApi.class);
430
+
431
+ @Value("${CLOUD_HOME}")
432
+ private String cloudHome; //公钥public.pem路径
433
+
434
+ @Override
435
+ public String[] getUserIdAndToken(@RequestParam(required = false) Map param) throws Exception {
436
+ logger.info("--------进入getUserIdAndToken------------");
437
+ String[] userToken = new String[2];
438
+ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
439
+ String userId = String.valueOf(param.get("userId"));//从request中获取用户标识后生成userId信息
440
+ String token= RSAUtils.encrypt(sdf.format(new Date())+userId,cloudHome + File.separator + "key");
441
+ userToken[0] = userId;
442
+ userToken[1] = token;
443
+ logger.info("--------userId------------" + userId);
444
+ logger.info("--------token------------" + token);
445
+ logger.info("--------结束------------");
446
+ return userToken;
447
+ }
448
+ }
449
+ ```
450
+
451
+ RSAUtils 类内容:
452
+
453
+ ```java
454
+ package com.meritdata.cloud.security.sso.token;
455
+
456
+ import org.apache.commons.codec.binary.Base64;
457
+
458
+ import javax.crypto.Cipher;
459
+ import java.io.File;
460
+ import java.io.FileInputStream;
461
+ import java.io.ObjectInputStream;
462
+ import java.security.Key;
463
+
464
+ public class RSAUtils {
465
+ private static String ALGORITHM = "RSA";
466
+ public static int KEYSIZE = 1024;
467
+ public static String ENCODE = "UTF-8";
468
+ public static String encrypt(String source, String path) throws Exception {
469
+ ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path + File.separator +"public.pem"));
470
+ Key key = (Key) ois.readObject();
471
+ ois.close();
472
+ Cipher cipher = Cipher.getInstance(ALGORITHM);
473
+ cipher.init(1, key);
474
+ byte[] b = source.getBytes();
475
+ byte[] b1 = cipher.doFinal(b);
476
+ return new String(Base64.encodeBase64(b1), ENCODE);
477
+ }
478
+ }
479
+ ```
480
+
481
+ IPortalSSOApi类内容:
482
+
483
+ ```java
484
+ package com.meritdata.cloud.security.sso.token;
485
+
486
+ import com.meritdata.cloud.base.DisableEncrypt;
487
+ import org.springframework.web.bind.annotation.RequestMapping;
488
+ import org.springframework.web.bind.annotation.RequestMethod;
489
+ import org.springframework.web.bind.annotation.RequestParam;
490
+
491
+ import java.util.Map;
492
+
493
+ /**
494
+ * @author liu yong
495
+ * @data 2022/8/11 14:25
496
+ */
497
+ @DisableEncrypt
498
+ public interface IPortalSSOApi {
499
+
500
+ /**
501
+ * 如果验证成功 返回用户id和token信息
502
+ * 否则返回长度为2的空数组即可
503
+ *
504
+ * @param param
505
+ * @return
506
+ * @throws Exception
507
+ */
508
+ @RequestMapping(value = "get-userid-token", method = RequestMethod.GET)
509
+ String[] getUserIdAndToken(@RequestParam Map param) throws Exception;
510
+ }
511
+ ```
512
+
513
+ 工程创建完成后结构如图:
514
+
515
+ ![image](./imgs/系统认证集成/token集成/3-20.jpg)
516
+
517
+ - 配置项管理配置 :
518
+
519
+ nacos 访问地址:http://localhost:8848/nacos/#/
520
+ 账号:admin
521
+ 密码:BigData.2018v6
522
+
523
+ Nacos 中 common.properties 中需要修改配置自定义 token 认证接口类。此处的配置为业务应用的 spring.application.name 的值
524
+ 如图: ![image](./imgs/系统认证集成/token集成/3-14.png)
525
+
526
+ ```properties
527
+ #自定义认证token接口类应用名,实现自定义token认证
528
+ meritdata.cloud.custom-sso-application-name=none
529
+ ```
530
+
531
+ 如果希望自定义工程,这里将默认值更改,在 Nacos 中改为对应工程服务名即可,例如:
532
+
533
+ ```properties
534
+ meritdata.cloud.custom-sso-application-name=project-business-sso
535
+ ```
536
+
537
+ 如图:修改后,点击发布
538
+ ![image](./imgs/系统认证集成/token集成/3-21.png)
539
+
540
+ * 启动服务:
541
+ ![image](./imgs/系统认证集成/token集成/3-22.jpg)
542
+ 启动后进入 nacos 查看服务列表,出现服务名则启动成功:
543
+ ![image](./imgs/系统认证集成/token集成/3-23.jpg)
544
+
545
+ - 自定义 token 登录展示
546
+ 在自定义接口 CustomSSOApi 中制定加密逻辑,目前没有进行加密,只需要使用 userId 进行登录即可进行访问:
547
+ 格式:http://服务ip地址:Nginx端口号/portal#/?userId=登录用户名<br>
548
+ - 这里使用的登录用户名必须为已在应用开发平台完成新建
549
+ 例如:http://127.0.0.1:8080/portal/#/?userId=admin
550
+
551
+ 注意服务器 ip:查看 Nacos 中 common.properties 文件中 meritdata.cloud.server.ip 值
552
+ 如下图所示:
553
+
554
+ ![image](./imgs/系统认证集成/token集成/3-16.png)
555
+
556
+ 进行访问:
557
+ ![image](./imgs/系统认证集成/token集成/3-17.png)
558
+ 成功后跳转如图:
559
+ ![image](./imgs/系统认证集成/token集成/3-10.png)
560
+
561
+ ## 3 cas 统一认证中心
562
+
563
+ ### 3.1 CAS 单点登录集成方式
564
+
565
+ CAS(Central Authentication Service – 中心认证服务)是 SSO 的一种解决方案。通过一个公用的认证系统统一管理和验证用户的身份。在 CAS 上验证的用户将获得 CAS 颁发的一个证书,使用这个证书用户可以在承认 CAS 证书的各个系统上自由访问,不需要再次登录认证。
566
+ 平台在与外部系统使用 CAS 进行集成时,可以使用平台提供的 CAS 服务或者使用由外部系统提供的 CAS 服务。
567
+ 分为两部分,认证中心和应用程序端都需要进行相关配置
568
+
569
+ 参考附录 1:认证中心配置,仅限开发演示使用
570
+
571
+ ### 3.2 应用程序服务端配置
572
+
573
+ #### 3.2.1 配置虚拟域名
574
+
575
+ 打开文件路径:C:\Windows\System32\drivers\etc\hosts
576
+ 在最后一行中加入: 191.168.3.212 cas.merit.com
577
+ 说明:IP 地址为认证中心所在服务器 IP
578
+
579
+ #### 3.2.2 删除应用开发平台原有的 JRE 证书
580
+
581
+ 执行如下命令时首先需要将认证中心端生成的证书拷贝到应用程序所在的服务器端。例如 D 盘根目录
582
+ 步骤如下:开始 > 运行 > cmd
583
+
584
+ ```
585
+ keytool -delete -alias tomcatMerit -file D:\server.crt -keystore D:\8.0.0\run\merit_cloud\jdk\windows\jdk1.8.0_111\jre\lib\security\cacerts
586
+ ```
587
+
588
+ 证书所在路径:D:\server.crt
589
+ 应用开发平台应用程序中 jre 下 cacerts 文件的所在路径:D:\8.0.0\run\merit_cloud\jdk\windows\jdk1.8.0_111\jre\lib\security\cacerts
590
+ 注意:此处的 JRE 一定是应用开发平台应用程序所使用的 JRE,并且目录中不能有空格,通常默认的 jdk 安装路径都会含有空格,所以需要重新复制 JDK 目录。
591
+
592
+ #### 3.2.3 将证书导入 JRE
593
+
594
+ 步骤如下:开始 > 运行 > cmd
595
+
596
+ ```
597
+ keytool -import -alias tomcatMerit -file D:\server.crt -keystore D:\8.0.0\run\merit_cloud\jdk\windows\jdk1.8.0_111\jre\lib\security\cacerts
598
+ ```
599
+
600
+ 证书所在路径:D:\server.crt
601
+ 应用开发平台应用程序中 jre 下 cacerts 文件的所在路径:D:\8.0.0\run\merit_cloud\jdk\windows\jdk1.8.0_111\jre\lib\security\cacerts
602
+
603
+ 注意:此处的 JRE 一定是启动应用开发平台应用所使用的 JRE,并且目录中不能有空格,通常默认的 jdk 安装路径都会含有空格,所以需要重新复制 JDK 目录。
604
+
605
+ #### 3.2.4 数据项配置
606
+
607
+ nacos 平台访问地址:http://localhost:8848/nacos/#/
608
+ 账号:admin
609
+ 密码:BigData.2018v6
610
+
611
+ nacos 配置文件修改:
612
+ 1)common-cloud-system-cas.properties 文件
613
+
614
+ ```properties
615
+ cas.app-host=${meritdata.cloud.web-server}/cas
616
+ cas.app-validationtype=CAS2
617
+ cas.app-login=/security/login
618
+ cas.app-logout=/security/logout
619
+ ####CAS服务地址前缀####
620
+ cas.server-prefix=https://cas.merit.com:8443/cas_server
621
+ ####CAS服务认证地址####
622
+ cas.server-host=${cas.server-prefix}
623
+ ####CAS登录路径####
624
+ cas.server-login=${cas.server-host}/login
625
+ ####CAS注销路径####
626
+ cas.server-logout=${cas.server-host}/logout?service=${cas.app-host}
627
+ #cas 认证成功后的自定义认证接口的应用名 根据此接口自定义首页地址
628
+ meritdata.cloud.custom-cas-auth-application-name=none
629
+ ```
630
+
631
+ 只需要修改 CAS 服务地址前缀 即可,该配置为 cas 认证中心的认证地址
632
+ cas.server-prefix=https://cas.merit.com:8443/cas_server
633
+
634
+ 2).common.propertis 文件
635
+ 修改认证模式为 cas
636
+
637
+ ```properties
638
+ #认证模式 standard oauth2 cas
639
+ meritdata.cloud.authentication-mode=cas
640
+ ```
641
+
642
+ #### 3.2.5 Nginx 添加 cas 首页代理配置
643
+
644
+ 在安装目录/mids/nginx/conf/nginx.conf 文件
645
+
646
+ server 节点下添加如下配置(注意:先检查一下是否存在以下内容,存在则不用添加)
647
+ 给 cas 登录一个入口,跳转到 cloud-system-manage 进行登录
648
+
649
+ ```conf
650
+ #给cas登录一个入口,跳转到cloud-system-manage进行登录
651
+ location /cas/ {
652
+ proxy_pass http://localhost:8081/;
653
+
654
+ add_header 'Access-Control-Allow-Origin' '*';
655
+ add_header 'Access-Control-Allow-Credentials' 'true';
656
+ add_header 'Access-Control-Allow-Methods' 'GET, POST';
657
+ }
658
+ #给cas跳转前端页面提供代理接口,通过这个接口调整前端页面
659
+ location /cas/portal/ {
660
+ proxy_pass http://localhost:8081/cloud-system-manage/cas/portal;
661
+
662
+ add_header 'Access-Control-Allow-Origin' '*';
663
+ add_header 'Access-Control-Allow-Credentials' 'true';
664
+ add_header 'Access-Control-Allow-Methods' 'GET, POST';
665
+ }
666
+ ```
667
+
668
+ 注意:配置项修改完成之后重启 cloud-system-manage 服务和 Nginx
669
+
670
+ #### 3.2.6 重新启动系统后 访问 http:nginx_ip:nginx_port/cas 触发登录
671
+
672
+ 浏览器输入http://localhost:8080/cas 后跳转到如下进入 cas 登录页面
673
+
674
+ 登录名:admin
675
+ 密码:BigData.2018v6
676
+
677
+ ![image](./imgs/系统认证集成/cas集成/1-2.jpg)
678
+
679
+ cas 用户认证成功后会默认跳转到系统首页。如果访问的是系统内的某个业务页面,会跳转至该页面
680
+
681
+ ## 4 第三方认证中心
682
+
683
+ ### 4.1 前置准备
684
+
685
+ 根据应用开发平台使用攻略(一):系统环境搭建完成业务应用工程搭建
686
+
687
+ ### 4.2 适用场景
688
+
689
+ 项目现场多数情况是客户提供认证中心,在访问应用开发平台时对请求进行拦截,跳转至客户方的统一认证中心进行登录,在认证中心登录后回调至应用开发平台进行访问。由于第三方认证的认证机制的不统一性,平台提供统一认证拦截机制。
690
+
691
+ ### 4.3 认证流程
692
+
693
+ <img src="./imgs/系统认证集成/cas集成/1-3.jpg" width="350px">
694
+
695
+ - 1.客户端请求接口,filter 进行拦截。如果没有回话跳转至配置的认证中心地址进行登录,如果有会话到步骤 2;
696
+ - 2.校验会话,如果有会话直接请求接口。如果没有会话,访问自定义 token 接口,根据返回的用户标识在接口中返回 userId 和 token 信息;
697
+ - 3.根据自定义接口返回的 userId 和 token 生成会话对象,访问接口。
698
+
699
+ ### 4.4 配置信息
700
+
701
+ - 认证首页控制层接入
702
+
703
+ ```java
704
+ @RestController
705
+ @RequestMapping(value = "/api/business")
706
+ public class SsoController {
707
+ @Autowired
708
+ private MeritdataCloudProperties meritdataCloudProperties;
709
+ @RequestMapping("portal")
710
+ public void casPortal(@RequestParam(required = false) String url, HttpServletResponse response) throws IOException {
711
+ if(StringUtils.isBlank(url)) {
712
+ response.sendRedirect(meritdataCloudProperties.getIndex());
713
+ return;
714
+ }
715
+ response.sendRedirect(meritdataCloudProperties.getWebServer()+url);
716
+ }
717
+ }
718
+ ```
719
+
720
+ - 认证 nginx 首页接入
721
+ 在运行环境中修改 mids/nginx/conf/nginx.conf 配置文件,内容如下:
722
+
723
+ ```conf
724
+ location /business/portal {
725
+ proxy_pass http://localhost:8081/project-business-sso/api/business/portal;
726
+
727
+ add_header 'Access-Control-Allow-Credentials' 'true';
728
+ add_header 'Access-Control-Allow-Methods' 'GET, POST';
729
+ }
730
+ ```
731
+
732
+ - 认证 Filter 接入
733
+ 通过配置项接入 filter,需要将以下配置项添加至 nacos 的 common.properties 中。参数配置示例如下:
734
+
735
+ ```properties
736
+ meritdata.cloud.third-filter.class-name=com.meritdata.cloud.filter.ThirdSSoFilter
737
+ meritdata.cloud.third-filter.enable=true
738
+ meritdata.cloud.third-filter.order=1
739
+ meritdata.cloud.third-filter.urlPatterns=/**
740
+ meritdata.cloud.third-filter.parmaters[0].key=clientId
741
+ meritdata.cloud.third-filter.parmaters[0].value=service
742
+ meritdata.cloud.third-filter.parmaters[1].key=userAuthorizationUri
743
+ meritdata.cloud.third-filter.parmaters[1].value=https://cas.merit.com:8443/cas_server/login
744
+ ```
745
+
746
+ ![image](./imgs/系统认证集成/cas集成/1-4.jpg)
747
+ <br>
748
+
749
+ - filter 类示例:
750
+
751
+ ```java
752
+ package com.meritdata.cloud.filter;
753
+ import com.meritdata.cloud.security.standard.service.SkipPathRequestMatcher;
754
+ import org.apache.commons.lang3.StringUtils;
755
+ import org.slf4j.Logger;
756
+ import org.slf4j.LoggerFactory;
757
+ import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
758
+ import org.springframework.security.core.context.SecurityContextHolder;
759
+ import javax.servlet.*;
760
+ import javax.servlet.http.HttpServletRequest;
761
+ import javax.servlet.http.HttpServletResponse;
762
+ import java.io.IOException;
763
+ import java.net.URLEncoder;
764
+ import java.util.*;
765
+ /**在会话之前进行拦截跳转至认证页面*/
766
+ public class ThirdSSoFilter implements Filter {
767
+ private static Logger logger = LoggerFactory.getLogger(ThirdSSoFilter.class);
768
+ private String webServerUri;
769
+ private String securityAnon;
770
+ private String clientId;
771
+ private String userAuthorizationUri;
772
+ /**
773
+ * 默认传递参数,匿名配置项和系统入口url信息,其余通过配置meritdata.cloud.third-filter.parmaters传递的参数,可通过filterConfig.getInitParameter("key")获取
774
+ */
775
+ @Override
776
+ public void init(FilterConfig filterConfig) throws ServletException {
777
+ logger.info("filterConfig is init");
778
+ this.webServerUri = filterConfig.getInitParameter("webServer");
779
+ this.securityAnon = filterConfig.getInitParameter("securityAnon");
780
+ this.clientId = filterConfig.getInitParameter("clientId");
781
+ this.userAuthorizationUri = filterConfig.getInitParameter("userAuthorizationUri");
782
+ }
783
+
784
+ @Override
785
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
786
+ String processingPath = "/**"; // 需要登录认证的url
787
+ List<String> pathsToSkip = Arrays.asList(securityAnon.split(",")); //匿名url
788
+ SkipPathRequestMatcher skipPathRequestMatcher = new SkipPathRequestMatcher(pathsToSkip, processingPath);
789
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
790
+ //如果是匿名的资源链接,或者已经有会话信息则直接跳过
791
+ if (skipPathRequestMatcher.matches(request) ||
792
+ (SecurityContextHolder.getContext().getAuthentication() instanceof UsernamePasswordAuthenticationToken)) {
793
+ filterChain.doFilter(servletRequest, servletResponse);
794
+ return;
795
+ }
796
+ //判断是否有用户标识,如果有则跳过,如果没有则回调到认证地址
797
+ if(StringUtils.isNotBlank(request.getParameter("userId"))||StringUtils.isNotBlank(request.getHeader("userId"))) {
798
+ filterChain.doFilter(servletRequest, servletResponse);
799
+ } else {
800
+ ((HttpServletResponse)servletResponse).sendRedirect(getAuthorizationUri());
801
+ }
802
+ }
803
+ private String getAuthorizationUri() {
804
+ String webUrl = URLEncoder.encode(webServerUri+"/business/portal");
805
+ return this.userAuthorizationUri+"?"+this.clientId+"="+webUrl;
806
+ }
807
+ @Override
808
+ public void destroy() {}
809
+ }
810
+ ```
811
+
812
+ ### 4.4 部署步骤
813
+
814
+ ​ 如果是6.9版本及之前,将filter的jar包放在apps/system/server/gateway/WEB-INF/lib目录下
815
+
816
+ ​ 如果是1.10-6.12版本,将filter的jar包放在apps/system/server/gateway-dev-lib目录下,如果没有gateway-dev-lib目录则新建
817
+
818
+ ​ 如果是6.13版本,将filter的jar包放在apps/system/server/manage-dev-lib目录下,如果没有manage-dev-lib目录则新建
819
+
820
+ ### 4.5 认证登录
821
+
822
+ 认证登录地址:http://localhost:8080/business/portal
823
+
824
+ ## 附录 1: 认证中心端配置
825
+
826
+ #### 1.1 创建证书
827
+
828
+ a.在 C 盘新建目录/resource/cas
829
+ b.开始 > 运行 > cmd :cd resource/cas
830
+
831
+ ```
832
+ keytool -genkey -alias tomcat -keystore C:\resource\cas\mykeystore -keyalg RSA -validity 2000
833
+
834
+ ```
835
+
836
+ ![image](./imgs/系统认证集成/cas集成/1-5.jpg)
837
+ | 名称 | 值 |
838
+ | -------------------- | ------------- |
839
+ | 口令 | changeit |
840
+ | 名字和姓氏 | cas.merit.com |
841
+ | 组织名称/单位名称 | merit |
842
+ | 所在的城市或区域名称 | Xian |
843
+ | 所在的州或者省份 | Shanxi |
844
+ 如果顺利执行以上的代码 则会在电脑的 C:/resource/cas 目录下生成 mykeystore 的文件。
845
+
846
+ #### 1.2 导出证书
847
+
848
+ 步骤如下:开始 > 运行 > cmd :cd resource/cas
849
+
850
+ ```
851
+ keytool -export -alias tomcat -keystore C:\resource\cas\mykeystore -file server.crt
852
+ ```
853
+
854
+ 输入密码:changeit
855
+ 如果顺利执行, 则会在电脑的 C:/resource/cas 目录下生成 server.crt 的文件。
856
+
857
+ #### 1.3 删除 tomcat 中原有 JRE 证书
858
+
859
+ 步骤如下:开始 > 运行 > cmd :cd resource/cas
860
+
861
+ ```
862
+ keytool -delete -alias tomcatMerit -file C:\resource\cas\server.crt -keystore D:\cas-server\jdk1.7.0_07\jre\lib\security\cacerts
863
+ ```
864
+
865
+ 证书所在路径:C:\resource\cas\server.crt
866
+ Tomact 中 jre 下 cacerts 文件的所在路径:D:\cas-server\jdk1.7.0_07\jre\lib\security\cacerts
867
+
868
+ 注意:
869
+ 此处的 JRE 一定是 tomcat 所使用的 JRE,并且目录中不能有空格,通常默认的 jdk 安装路径都会含有空格,所以需要重新复制 JDK 目录。
870
+
871
+ #### 1.4 将证书导入 JRE
872
+
873
+ 步骤如下:开始 > 运行 > cmd :cd resource/cas
874
+
875
+ ```
876
+ keytool -import -alias tomcatMerit -file C:\resource\cas\server.crt -keystore D:\cas-server\jdk1.7.0_07\jre\lib\security\cacerts
877
+ ```
878
+
879
+ 证书所在路径:C:\resource\cas\server.crt
880
+ Tomact 中 jre 下 cacerts 文件的所在路径:D:\cas-server\jdk1.7.0_07\jre\lib\security\cacerts
881
+
882
+ 注意:
883
+ 此处的 JRE 一定是 tomact 所使用的 JRE,并且目录中不能有空格,通常默认的 jdk 安装路径都会含有空格,所以需要重新复制 JDK 目录。
884
+
885
+ #### 1.5 cas_server 数据库配置
886
+
887
+ 在 cas-server\webapps\cas_server\WEB-INF\deployerConfigContext.xml 修改如下,这里根据实际情况填写,如果认证中心使用的 MYSQL 数据库,则需要在
888
+ (cas-server\webapps\cas_server\WEB-INF\lib)目录下添加相应的数据库驱动包。
889
+ 本案例中使用的是 mysql 数据库,添加的驱动包为 mysql-connector-java-5.1.12.jar,如果是其他数据库,操作相同
890
+
891
+ ```xml
892
+ <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
893
+ <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
894
+ <property name="url"><value>jdbc:mysql://191.168.4.17:3336/cloud</value></property>
895
+ <property name="username"><value>用户名</value></property>
896
+ <property name="password"><value>密码</value></property>
897
+ </bean>
898
+ ```
899
+
900
+ 注意: cas_server 所配置的数据库中表信息中存在登录使用的账号和密码,在应用开发平台数据库中也必须存在,并且保持账号和密码一致。
901
+
902
+ 如果 cas_server 数据库配置连接的是应用开发平台的数据库,
903
+ 由于加密方式不同,需要在数据库改一下登录密码
904
+ 本案例使用登录的账号如下:
905
+ 登录名:admin
906
+ 密码:111111
907
+ 则需要在应用开发平台的数据库中更改账号名为 admin 用户的密码为:96e79218965eb72c92a549dd5a330112