diff --git a/app.platform/build.gradle b/app.platform/build.gradle index a71f9c0a..48eb40af 100644 --- a/app.platform/build.gradle +++ b/app.platform/build.gradle @@ -14,8 +14,8 @@ dependencies { project(":io.sc.platform.app"), project(":io.sc.platform.developer"), project(":io.sc.platform.security.oauth2.server.authorization"), - //project(":io.sc.platform.security.oauth2.server.resource"), - //project(":io.sc.platform.security.loginform"), + project(":io.sc.platform.security.oauth2.server.resource"), + project(":io.sc.platform.security.loginform"), /* project(":io.sc.platform.scheduler.manager"), diff --git a/app.platform/src/main/resources/app/platform/i18n/messages_zh_CN.properties b/app.platform/src/main/resources/app/platform/i18n/messages_zh_CN.properties index 01022b8f..0d793ded 100644 --- a/app.platform/src/main/resources/app/platform/i18n/messages_zh_CN.properties +++ b/app.platform/src/main/resources/app/platform/i18n/messages_zh_CN.properties @@ -1,3 +1,3 @@ -application.title=\u5B87\u4FE1\u79D1\u6280-\u98CE\u9669\u7BA1\u7406\u5E73\u53F0 +application.title=\u98CE\u9669\u7BA1\u7406\u5E73\u53F0 application.version=$version application.copyright=Copyright \u00A9 2019\u20132022 \ No newline at end of file diff --git a/default-authorizationserver/src/main/java/sample/DefaultAuthorizationServerApplication.java b/default-authorizationserver/src/main/java/sample/DefaultAuthorizationServerApplication.java index 17a7ddcf..ebe70178 100644 --- a/default-authorizationserver/src/main/java/sample/DefaultAuthorizationServerApplication.java +++ b/default-authorizationserver/src/main/java/sample/DefaultAuthorizationServerApplication.java @@ -18,6 +18,8 @@ package sample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.util.Base64; + /** * @author Joe Grandja * @since 0.0.1 @@ -26,7 +28,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class DefaultAuthorizationServerApplication { public static void main(String[] args) { - SpringApplication.run(DefaultAuthorizationServerApplication.class, args); + String base64 =Base64.getEncoder().encodeToString("platform-oidc:secret".getBytes()); + System.out.println(base64); + //http://localhost:8080/oauth2/authorize?client_secret=secret&client_id=platform-oidc&response_type=code&redirect_uri=http://localhost:8080/oauth2/authorized-oidc + //SpringApplication.run(DefaultAuthorizationServerApplication.class, args); } } diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts index 76db586f..fc178516 100644 --- a/io.sc.platform.core.frontend/src/platform/index.ts +++ b/io.sc.platform.core.frontend/src/platform/index.ts @@ -86,6 +86,7 @@ export { I18nMessageManager } from './plugin'; export { MenuManager } from './plugin'; export { MockManager } from './plugin'; export { NotifyManager } from './plugin'; +export { Oauth2Manager } from './plugin'; export { RouterManager } from './plugin'; export { SessionManager } from './plugin'; export { TagViewManager } from './plugin'; diff --git a/io.sc.platform.core.frontend/src/platform/layout/WBasicLayout.vue b/io.sc.platform.core.frontend/src/platform/layout/WBasicLayout.vue index ce90dada..0de1a54f 100644 --- a/io.sc.platform.core.frontend/src/platform/layout/WBasicLayout.vue +++ b/io.sc.platform.core.frontend/src/platform/layout/WBasicLayout.vue @@ -3,8 +3,8 @@ diff --git a/io.sc.platform.core.frontend/src/views/testcase/maxgraph/maxgraph.vue b/io.sc.platform.core.frontend/src/views/testcase/maxgraph/maxgraph.vue index 28f6574f..a9a2498a 100644 --- a/io.sc.platform.core.frontend/src/views/testcase/maxgraph/maxgraph.vue +++ b/io.sc.platform.core.frontend/src/views/testcase/maxgraph/maxgraph.vue @@ -5,6 +5,7 @@ import { onMounted, vue } from 'vue'; import { type CellStyle, Graph, InternalEvent } from '@maxgraph/core'; +/* onMounted(() => { const container = document.getElementById('graph-container'); // Disables the built-in context menu @@ -48,4 +49,5 @@ onMounted(() => { }); }); }); +*/ diff --git a/io.sc.platform.developer.doc/asciidoc/9999-appendix/oauth2/oauth2.adoc b/io.sc.platform.developer.doc/asciidoc/9999-appendix/oauth2/oauth2.adoc index f273cf54..18eb252b 100644 --- a/io.sc.platform.developer.doc/asciidoc/9999-appendix/oauth2/oauth2.adoc +++ b/io.sc.platform.developer.doc/asciidoc/9999-appendix/oauth2/oauth2.adoc @@ -220,35 +220,18 @@ private_key_jwt 和 client_secret_jwt 唯一的区别就是生成 JWT 的方式 | token_type_hint | 请求 | | |=== +== 示例 === 获取授权码 -http://localhost:8080/oauth2/authorize?client_secret=secret&client_id=platform-oidc&response_type=code&redirect_uri=http://localhost:8080/oauth2/authorized-oidc -|=== -| 参数名 | 参数值 | 说明 -| client_id | | 注册客户端 ID -| response_type | code | 响应类型 -| -|=== +在浏览器地址栏中输入: + +http://localhost:8080/oauth2/authorize?client_id=platform-oidc&client_secret=secret&response_type=code&redirect_uri=http://localhost:8080/oauth2/authorized-oidc + +image::9999-appendix/oauth2/010.png[,100%] + +如果还未登录过,系统重定向到登录页面 + +image::9999-appendix/oauth2/011.png[,80%] + +输入登录用户名和密码,成功登录后,返回授权码。 -org.springframework.security.web.session.DisableEncodeUrlFilter, -org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter, -org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.AuthorizationServerContextFilter, -org.springframework.security.web.context.SecurityContextPersistenceFilter, -org.springframework.security.web.header.HeaderWriterFilter, -org.springframework.security.web.csrf.CsrfFilter, -org.springframework.security.web.authentication.logout.LogoutFilter, -org.springframework.security.oauth2.server.authorization.web.OAuth2AuthorizationServerMetadataEndpointFilter, -org.springframework.security.oauth2.server.authorization.web.OAuth2AuthorizationEndpointFilter, -org.springframework.security.oauth2.server.authorization.oidc.web.OidcProviderConfigurationEndpointFilter, -org.springframework.security.oauth2.server.authorization.web.NimbusJwkSetEndpointFilter, -org.springframework.security.oauth2.server.authorization.web.OAuth2ClientAuthenticationFilter, -org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationFilter, -org.springframework.security.web.savedrequest.RequestCacheAwareFilter, -org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter, -org.springframework.security.web.authentication.AnonymousAuthenticationFilter, -org.springframework.security.web.session.SessionManagementFilter, -org.springframework.security.web.access.ExceptionTranslationFilter, -org.springframework.security.web.access.intercept.FilterSecurityInterceptor, -org.springframework.security.oauth2.server.authorization.web.OAuth2TokenEndpointFilter, -org.springframework.security.oauth2.server.authorization.web.OAuth2TokenIntrospectionEndpointFilter, -org.springframework.security.oauth2.server.authorization.web.OAuth2TokenRevocationEndpointFilter, -org.springframework.security.oauth2.server.authorization.oidc.web.OidcUserInfoEndpointFilter +=== 通过授权码获取令牌 diff --git a/io.sc.platform.developer.doc/asciidoc/index.adoc b/io.sc.platform.developer.doc/asciidoc/index.adoc index d4de37bb..f87456df 100644 --- a/io.sc.platform.developer.doc/asciidoc/index.adoc +++ b/io.sc.platform.developer.doc/asciidoc/index.adoc @@ -33,6 +33,7 @@ include::getting-started/getting-started.adoc[leveloffset=+1] include::platform-extension/platform-extension.adoc[leveloffset=+1] +include::system-design/system-design.adoc[leveloffset=+1] include::frontend/frontend.adoc[leveloffset=+1] include::bank-business/bank-business.adoc[leveloffset=+1] diff --git a/io.sc.platform.developer.doc/asciidoc/resources/images/9999-appendix/oauth2/010.png b/io.sc.platform.developer.doc/asciidoc/resources/images/9999-appendix/oauth2/010.png new file mode 100644 index 00000000..c98a98fd Binary files /dev/null and b/io.sc.platform.developer.doc/asciidoc/resources/images/9999-appendix/oauth2/010.png differ diff --git a/io.sc.platform.developer.doc/asciidoc/resources/images/9999-appendix/oauth2/011.png b/io.sc.platform.developer.doc/asciidoc/resources/images/9999-appendix/oauth2/011.png new file mode 100644 index 00000000..3406da93 Binary files /dev/null and b/io.sc.platform.developer.doc/asciidoc/resources/images/9999-appendix/oauth2/011.png differ diff --git a/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/001.png b/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/001.png new file mode 100644 index 00000000..904d3616 Binary files /dev/null and b/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/001.png differ diff --git a/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/002.png b/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/002.png new file mode 100644 index 00000000..64fe5edf Binary files /dev/null and b/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/002.png differ diff --git a/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/003.png b/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/003.png new file mode 100644 index 00000000..348a81fe Binary files /dev/null and b/io.sc.platform.developer.doc/asciidoc/resources/images/system-design/application-entry/003.png differ diff --git a/io.sc.platform.developer.doc/asciidoc/system-design/application-entry/application-entry.adoc b/io.sc.platform.developer.doc/asciidoc/system-design/application-entry/application-entry.adoc new file mode 100644 index 00000000..97a105f8 --- /dev/null +++ b/io.sc.platform.developer.doc/asciidoc/system-design/application-entry/application-entry.adoc @@ -0,0 +1,36 @@ += 应用入口 (War 包场景) + +== 核心原理 + +image::system-design/application-entry/001.png[,100%] + +<1> 应用入口 URL +<2> 用户登录页面 +<3> 后端处理, 返回视图。 通过查看 io.sc.platform.mvc 模块的源码,在 resources/template 目录中没有 io.sc.platform.mvc.frontend.html 模版文件,该模版文件通过以下步骤生成 +<4> io.sc.platform.mvc.frontend 是前端模块, public/index.html 文件就是首页模版文件 +<5> 构建前端,构建后的前端文件位于 dist/public/io.sc.platform.mvc.frontend 目录中 +<6> 将前端模块打包成 jar时, 将前端模块中的 dist/public/io.sc.platform.mvc.frontend/index.html 文件复制成 resources/template/io.sc.platform.mvc.frontend.html 文件 + +== index.html 解析 + +image::system-design/application-entry/002.png[,100%] + +该 index.html 文件需要加载 configure.js 文件,该文件包含前端运行时的最核心配置信息,主要包括: + +. webContextPath: 应用上下文路径 +. apiContextPaths: 默认后端 API 请求的服务地址前缀 + +[source,javascript] +---- + +---- + +[TIP] +