public async Task <string> Do(HttpRequest request) { //从request的querystring中获取sysname参数 if (!request.Query.TryGetValue("sysname", out StringValues strSysName)) { var fragment = new TextFragment() { Code = TextCodes.NotFoundSysNameQuerystringInCallbackRequest, DefaultFormatting = "在第三方认证系统回调请求处理中,回调请求的Url中不包含sysname参数,回调请求的Url为{0}", ReplaceParameters = new List <object>() { request.Path.Value } }; throw new UtilityException((int)Errors.NotFoundSysNameQuerystringInCallbackRequest, fragment); } //获取系统登录终结点 var systemLoginEndpoint = await _systemLoginEndpointRepository.QueryByName(strSysName[0]); if (systemLoginEndpoint == null) { var fragment = new TextFragment() { Code = TextCodes.NotFoundSystemLoginEndpointByName, DefaultFormatting = "找不到名称为{0}的系统登录终结点", ReplaceParameters = new List <object>() { strSysName[0] } }; throw new UtilityException((int)Errors.NotFoundSystemLoginEndpointByName, fragment); } var redirectUrl = await systemLoginEndpoint.GetCommonToken(request); return(redirectUrl); }
public async Task <string> Do(string systemLoginEndpointName, string authorizationEndpointName, string userName, string password) { var systemLoginEndpoint = await _systemLoginEndpointRepository.QueryByName(systemLoginEndpointName); if (systemLoginEndpoint == null) { var fragment = new TextFragment() { Code = TextCodes.NotFoundSystemLoginEndpointByName, DefaultFormatting = "找不到名称为{0}的系统登录终结点", ReplaceParameters = new List <object>() { systemLoginEndpointName } }; throw new UtilityException((int)Errors.NotFoundSystemLoginEndpointByName, fragment); } var result = await systemLoginEndpoint.GetCommonToken(authorizationEndpointName, userName, password); return(result); }
public async Task <string> Do(string strToken) { //从strToken中分解出JWT的键值对,从键值对中获取SystemName //_securityService.ValidateJWT() var jwtResult = _securityService.GetPlayloadFromJWT(strToken); if (!jwtResult.ValidateResult.Result) { var fragment = new TextFragment() { Code = TextCodes.ExecuteAppJWTError, DefaultFormatting = "在执行应用{0}时,处理的JWT{1}错误,错误原因{2}", ReplaceParameters = new List <object>() { "MSLibrary.SystemToken.Application.AppRefreashCommonToken", strToken, jwtResult.ValidateResult.Description } }; //验证未通过,抛出异常 throw new UtilityException((int)Errors.ExecuteAppJWTError, fragment); } Dictionary <string, string> jwtDict = jwtResult.Playload; if (!jwtDict.TryGetValue("SystemName", out string systemName)) { var fragment = new TextFragment() { Code = TextCodes.NotFoundKeyInCommonTokenJWT, DefaultFormatting = "在通用令牌的JWT字符串{0}中,找不到名称为{1}的键", ReplaceParameters = new List <object>() { strToken, "SystemName" } }; throw new UtilityException((int)Errors.NotFoundKeyInCommonTokenJWT, fragment); } //获取系统登录终结点 var systemLoginEndpoint = await _systemLoginEndpointRepository.QueryByName(systemName); if (systemLoginEndpoint == null) { var fragment = new TextFragment() { Code = TextCodes.NotFoundSystemLoginEndpointByName, DefaultFormatting = "找不到名称为{0}的系统登录终结点", ReplaceParameters = new List <object>() { systemName } }; throw new UtilityException((int)Errors.NotFoundSystemLoginEndpointByName, fragment); } //刷新令牌的JWT字符串 return(await systemLoginEndpoint.RefreshToken(strToken)); }
public async Task Do(List <string> strTokenList) { List <Exception> exList = new List <Exception>(); foreach (var item in strTokenList) { try { //从strToken中分解出JWT的键值对,从键值对中获取SystemName var jwtResult = _securityService.GetPlayloadFromJWT(item); if (!jwtResult.ValidateResult.Result) { var fragment = new TextFragment() { Code = TextCodes.ExecuteAppJWTError, DefaultFormatting = "在执行应用{0}时,处理的JWT{1}错误,错误原因{2}", ReplaceParameters = new List <object>() { "MSLibrary.SystemToken.Application.AppCommonTokenLogout", item, jwtResult.ValidateResult.Description } }; //验证未通过,抛出异常 throw new UtilityException((int)Errors.ExecuteAppJWTError, fragment); } Dictionary <string, string> jwtDict = jwtResult.Playload; if (!jwtDict.TryGetValue("SystemName", out string systemName)) { var fragment = new TextFragment() { Code = TextCodes.NotFoundKeyInCommonTokenJWT, DefaultFormatting = "在通用令牌的JWT字符串{0}中,找不到名称为{1}的键", ReplaceParameters = new List <object>() { item, "SystemName" } }; throw new UtilityException((int)Errors.NotFoundKeyInCommonTokenJWT, fragment); } //获取系统登录终结点 var systemLoginEndpoint = await _systemLoginEndpointRepository.QueryByName(systemName); if (systemLoginEndpoint == null) { var fragment = new TextFragment() { Code = TextCodes.NotFoundSystemLoginEndpointByName, DefaultFormatting = "找不到名称为{0}的系统登录终结点", ReplaceParameters = new List <object>() { systemName } }; throw new UtilityException((int)Errors.NotFoundSystemLoginEndpointByName, fragment); } await systemLoginEndpoint.LogoutToken(item); } catch (Exception ex) { exList.Add(ex); } } if (exList.Count > 0) { //记录日志 throw exList[0]; } }