|
@@ -33,9 +33,9 @@ import java.io.IOException;
|
|
|
import java.net.URLEncoder;
|
|
import java.net.URLEncoder;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * ??? E10 OAuth ?????????????? base ?? AbstractAuthController ??锟斤拷????
|
|
|
|
|
- * ????????? /auth/weaver/app(.do)???????? UnifiedAuthController ?? platform ??????
|
|
|
|
|
- * Apusic ????? *.do??
|
|
|
|
|
|
|
+ * 泛微 E10 OAuth 入口,继承 base 的 AbstractAuthController。
|
|
|
|
|
+ * PC/待办深链请走 /auth/weaver/app(.do),不要依赖 UnifiedAuthController 的 platform UA 识别。
|
|
|
|
|
+ * Apusic 需同时映射 *.do。
|
|
|
*/
|
|
*/
|
|
|
@SkipAuth
|
|
@SkipAuth
|
|
|
@SkipCallLog
|
|
@SkipCallLog
|
|
@@ -63,11 +63,11 @@ public class WeaverAuthController extends AbstractAuthController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * ????/?????????????? appId ????? state ?????? OAuth??
|
|
|
|
|
- * ???????锟斤拷 /auth/app?platform=weaver????????? base ?? UnifiedAuthController??
|
|
|
|
|
|
|
+ * 门户/待办显式入口:用 appId 生成 state 后跳转 OAuth。
|
|
|
|
|
+ * 不要用统一 /auth/app?platform=weaver(那条走 base 的 UnifiedAuthController)。
|
|
|
*/
|
|
*/
|
|
|
@GetMapping({"/weaver/app", "/weaver/app.do"})
|
|
@GetMapping({"/weaver/app", "/weaver/app.do"})
|
|
|
- @ApiDoc(name = "??????appId???", desc = "????????????????? state ????????")
|
|
|
|
|
|
|
+ @ApiDoc(name = "泛微显式appId入口", desc = "按 appId 生成 state 后进入 OAuth2 授权")
|
|
|
public void app(@RequestParam String appId,
|
|
public void app(@RequestParam String appId,
|
|
|
@RequestParam String redirect,
|
|
@RequestParam String redirect,
|
|
|
HttpServletResponse response) throws IOException {
|
|
HttpServletResponse response) throws IOException {
|
|
@@ -86,7 +86,7 @@ public class WeaverAuthController extends AbstractAuthController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@GetMapping({"/weaver", "/weaver.do"})
|
|
@GetMapping({"/weaver", "/weaver.do"})
|
|
|
- @ApiDoc(name = "?????????", desc = "???? state ????? OAuth2 ???")
|
|
|
|
|
|
|
+ @ApiDoc(name = "泛微授权入口", desc = "已有 state 时直接进入 OAuth2 授权")
|
|
|
public void auth(@RequestParam(name = "state", required = false) String state,
|
|
public void auth(@RequestParam(name = "state", required = false) String state,
|
|
|
HttpServletResponse response) throws IOException {
|
|
HttpServletResponse response) throws IOException {
|
|
|
if (StringUtils.isBlank(state)) {
|
|
if (StringUtils.isBlank(state)) {
|
|
@@ -96,7 +96,7 @@ public class WeaverAuthController extends AbstractAuthController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@GetMapping({"/callback/weaver/pa", "/callback/weaver/pa.do"})
|
|
@GetMapping({"/callback/weaver/pa", "/callback/weaver/pa.do"})
|
|
|
- @ApiDoc(name = "???OAuth???(pa)", desc = "??? pa?????? .do")
|
|
|
|
|
|
|
+ @ApiDoc(name = "泛微OAuth回调(pa)", desc = "主应用 pa 回调,兼容 .do")
|
|
|
public void callbackPa(@RequestParam(name = "code", required = false) String code,
|
|
public void callbackPa(@RequestParam(name = "code", required = false) String code,
|
|
|
@RequestParam(name = "state", required = false) String state,
|
|
@RequestParam(name = "state", required = false) String state,
|
|
|
HttpServletRequest request,
|
|
HttpServletRequest request,
|
|
@@ -109,7 +109,7 @@ public class WeaverAuthController extends AbstractAuthController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@GetMapping({"/callback/weaver/{appType}", "/callback/weaver/{appType}.do"})
|
|
@GetMapping({"/callback/weaver/{appType}", "/callback/weaver/{appType}.do"})
|
|
|
- @ApiDoc(name = "???OAuth???", desc = "??? appType?????? .do")
|
|
|
|
|
|
|
+ @ApiDoc(name = "泛微OAuth回调", desc = "按路径 appType 回调,兼容 .do")
|
|
|
public void callback(@RequestParam(name = "code", required = false) String code,
|
|
public void callback(@RequestParam(name = "code", required = false) String code,
|
|
|
@RequestParam(name = "state", required = false) String state,
|
|
@RequestParam(name = "state", required = false) String state,
|
|
|
@PathVariable String appType,
|
|
@PathVariable String appType,
|
|
@@ -123,13 +123,13 @@ public class WeaverAuthController extends AbstractAuthController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * ????????????锟斤拷?????logout ?? service ?????锟斤拷?????? authorize??
|
|
|
|
|
- * ????????? SHR ?????E10 ?????????????????????????????
|
|
|
|
|
- * ?? appId+redirect ????????????? -> ???? -> ??? SHR??
|
|
|
|
|
- * ???? service ??????????????????????????
|
|
|
|
|
|
|
+ * 联邦退出:把 logout 的 service 指回本系统 SSO 入口再进 authorize。
|
|
|
|
|
+ * 这样退出后再进 SHR 会先到 E10 登录页,而不是带着旧会话直接回 SHR。
|
|
|
|
|
+ * 传 appId+redirect 时拼出 SSO 入口;也可直接传 service。
|
|
|
|
|
+ * service 域名须在泛微退出重定向白名单内。
|
|
|
*/
|
|
*/
|
|
|
@GetMapping({"/weaver/logout", "/weaver/logout.do"})
|
|
@GetMapping({"/weaver/logout", "/weaver/logout.do"})
|
|
|
- @ApiDoc(name = "????????", desc = "????????????????????? SHR")
|
|
|
|
|
|
|
+ @ApiDoc(name = "泛微联邦退出", desc = "跳转泛微 logout,service 指向 SHR SSO 入口")
|
|
|
public void logout(@RequestParam(name = "appId", required = false) String appId,
|
|
public void logout(@RequestParam(name = "appId", required = false) String appId,
|
|
|
@RequestParam(name = "redirect", required = false) String redirect,
|
|
@RequestParam(name = "redirect", required = false) String redirect,
|
|
|
@RequestParam(name = "service", required = false) String service,
|
|
@RequestParam(name = "service", required = false) String service,
|
|
@@ -186,8 +186,8 @@ public class WeaverAuthController extends AbstractAuthController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * ???????????锟斤拷??????锟斤拷??????? sHR ?? POST ????????? Location ?? LTPA??
|
|
|
|
|
- * pathAppType ???? state ? appType ??????
|
|
|
|
|
|
|
+ * 回调成功后:桌面进 sHR 用 POST 表单,避免 Location 带 LTPA。
|
|
|
|
|
+ * pathAppType 在 state 无 appType 时兜底。
|
|
|
*/
|
|
*/
|
|
|
private void doWeaverCallback(String code,
|
|
private void doWeaverCallback(String code,
|
|
|
String state,
|
|
String state,
|
|
@@ -241,8 +241,8 @@ public class WeaverAuthController extends AbstractAuthController {
|
|
|
if ((device == DeviceType.MOBILE && isRedirectMbos)
|
|
if ((device == DeviceType.MOBILE && isRedirectMbos)
|
|
|
|| (device == DeviceType.DESKTOP && !isDesktopToShr)) {
|
|
|| (device == DeviceType.DESKTOP && !isDesktopToShr)) {
|
|
|
String mBosEid = config.getMBosEid();
|
|
String mBosEid = config.getMBosEid();
|
|
|
- if (StringUtils.isBlank(mBosEid) || mBosEid.contains("????锟斤拷")) {
|
|
|
|
|
- throw new IntegrationException(CommonErrorCodes.PARAM_MISSING, "MBosEid 锟斤拷????");
|
|
|
|
|
|
|
+ if (StringUtils.isBlank(mBosEid) || mBosEid.contains("请填写")) {
|
|
|
|
|
+ throw new IntegrationException(CommonErrorCodes.PARAM_MISSING, "MBosEid 未配置");
|
|
|
}
|
|
}
|
|
|
redirect += "&eid=" + mBosEid;
|
|
redirect += "&eid=" + mBosEid;
|
|
|
String finalRedirect = SHRApiUtils.generateToMBosUrl(userInfo.getNumber(), redirect);
|
|
String finalRedirect = SHRApiUtils.generateToMBosUrl(userInfo.getNumber(), redirect);
|