Package com.github.ebnew.ki4so.core.model

Examples of com.github.ebnew.ki4so.core.model.EncryCredentialInfo


        //测试正常情况。
        String userId = "test";
        EncryCredential encryCredential = new EncryCredential("ddd");
        Map<String, Object> param = new HashMap<String, Object>();
        encryCredential.setParameters(param);
        EncryCredentialInfo encryCredentialInfo = new EncryCredentialInfo();
        encryCredentialInfo.setUserId(userId);
        encryCredential.setEncryCredentialInfo(encryCredentialInfo);
        Principal principal = this.resolver.resolvePrincipal(encryCredential);
        assertNotNull(principal);
        assertEquals(userId, principal.getId());
        assertEquals(param, principal.getAttributes());
View Full Code Here


   * @param 加密过的凭据字符串。
   * @return 凭据对象。
   * @throws Exception
   */
  private EncryCredentialInfo parseEncryCredential(String credential) throws InvalidEncryCredentialException{
    EncryCredentialInfo encryCredentialInfo = new EncryCredentialInfo();
    try{
      //先使用URL解码,再用BASE64进行解码。
      credential = URLDecoder.decode(credential, "UTF-8");
      credential = new String(Base64Coder.decryptBASE64(credential));
     
      //问号分割字符串。
      String[] items = credential.split("\\?");
      //如果长度是2.
      if(items.length==2){
        //第2个字符串不为空,先解析第二个字符串。
        if(items[1]!=null && items[1].length()>0){
          //使用&分割字符。
          String[] params = items[1].split("&");
          for(int i=0; i<params.length; i++){
            if(params[i]!=null){
              //使用等号分割。
              String[] values = params[i].split("=");
              if(values!=null && values.length==2){
                if("appId".equals(values[0])){
                  encryCredentialInfo.setAppId(values[1]);
                }
                else if("keyId".equals(values[0])){
                  encryCredentialInfo.setKeyId(values[1]);
                }
              }
            }
          }
        }
        else{
          throw new InvalidEncryCredentialException();
        }
        //第1个字符串不为空
        if(!StringUtils.isEmpty(items[0])){
          //使用base64解码为源字符串。
          byte[] data =  Base64Coder.decryptBASE64(items[0]);
          //查询键值。
          Ki4soKey ki4soKey = keyService.findKeyByKeyId(encryCredentialInfo.getKeyId());
          if(ki4soKey!=null){
            //使用密钥进行解密。
            byte[] origin = DESCoder.decrypt(data, ki4soKey.toSecurityKey());
            //将byte数组转换为字符串。
            String json = new String(origin);
            @SuppressWarnings("rawtypes")
            Map map = (Map)JSON.parse(json);
            if(map!=null){
              Object userId = map.get("userId");
              Object createTime = map.get("createTime");
              Object expiredTime = map.get("expiredTime");
              encryCredentialInfo.setUserId(userId==null?null:userId.toString());
              encryCredentialInfo.setCreateTime(createTime==null?null:new Date((Long.parseLong(createTime.toString()))));
              encryCredentialInfo.setExpiredTime(expiredTime==null?null:new Date((Long.parseLong(expiredTime.toString()))));
            }
          }
        }
        else{
          throw new InvalidEncryCredentialException();
View Full Code Here

    }catch (InvalidEncryCredentialException e) {
      // TODO: handle exception
    }
   
    //测试正常情况。
    EncryCredentialInfo encryCredentialInfo = buildTextEncryCredentialInfo();
    String result =  encryCredentialManager.encrypt(encryCredentialInfo);
    encryCredentialManager.decrypt(new EncryCredential(result));
  }
View Full Code Here

    String result =  encryCredentialManager.encrypt(buildTextEncryCredentialInfo());
    Assert.assertNotNull(result);
  }
 
  private EncryCredentialInfo buildTextEncryCredentialInfo(){
    EncryCredentialInfo encryCredentialInfo = new EncryCredentialInfo();
    encryCredentialInfo.setAppId("1");
    Date createTime = new Date();
    encryCredentialInfo.setCreateTime(createTime);
    Date expiredTime = new Date();
    encryCredentialInfo.setExpiredTime(expiredTime);
    encryCredentialInfo.setKeyId("333");
    encryCredentialInfo.setUserId("wubingyang");
    return encryCredentialInfo;
  }
View Full Code Here

   
    /**
     * 测试解密成功,但是凭据不合法的情况。
     */
    Mockito.reset(encryCredentialManager);
    EncryCredentialInfo encryCredentialInfo = new EncryCredentialInfo();
    Mockito.when(encryCredentialManager.decrypt(encryCredential)).thenReturn(encryCredentialInfo);
    Assert.assertFalse(handler.authenticate(encryCredential));
   
   
    /**
     * 测试解密成功,但是凭据合法的情况。
     */
    Mockito.reset(encryCredentialManager);
    encryCredentialInfo = new EncryCredentialInfo();
    Mockito.when(encryCredentialManager.decrypt(encryCredential)).thenReturn(encryCredentialInfo);
    Mockito.when(encryCredentialManager.checkEncryCredentialInfo(encryCredentialInfo)).thenReturn(true);
    Assert.assertTrue(handler.authenticate(encryCredential));
  }
View Full Code Here

  @Override
  public void logoutClient(HttpServletRequest request,
      HttpServletResponse response) {
    //若已经登录,则作相关处理。
    if(request.getSession().getAttribute(Ki4soAppClientLoginHandlerImpl.USER_KEY)!=null){
      EncryCredentialInfo encryCredentialInfo = (EncryCredentialInfo)request.getSession().getAttribute(Ki4soAppClientLoginHandlerImpl.USER_KEY);
      //remove the exception
      request.getSession().setAttribute(Ki4soAppClientLoginHandlerImpl.USER_KEY, null);
      logger.info("the user id is "+encryCredentialInfo.getUserId() +" has logined out the app");
    }
  }
View Full Code Here

          }catch (Exception e) {
            logger.log(Level.SEVERE, "fetch ki4so key info error", e);
          }
        }
        //解密凭据信息。
        EncryCredentialInfo encryCredentialInfo = this.encryCredentialManager.decrypt(new EncryCredential(ki4so_client_ec));
        if(encryCredentialInfo!=null){
          //检查凭据合法性。
          boolean valid = this.encryCredentialManager.checkEncryCredentialInfo(encryCredentialInfo);
          //如果合法,则继续其它处理。
          if(valid){
View Full Code Here

    }
    if(credential!=null && credential instanceof EncryCredential){
      EncryCredential encryCredential = (EncryCredential)credential;
      try{
        //解密凭据信息。
        EncryCredentialInfo encryCredentialInfo = this.encryCredentialManager.decrypt(encryCredential);
        //设置凭据信息的关联性。
        if(encryCredentialInfo!=null){
          encryCredential.setEncryCredentialInfo(encryCredentialInfo);
          //检查加密凭据的合法性。
          return this.encryCredentialManager.checkEncryCredentialInfo(encryCredentialInfo);
View Full Code Here

      }
    }
  }
 
  private EncryCredentialInfo buildEncryCredentialInfo(String appId, AuthenticationImpl authentication, Principal principal){
    EncryCredentialInfo encryCredentialInfo = new EncryCredentialInfo();
                if(authentication==null || principal==null){
                    return encryCredentialInfo;
                }
    Ki4soKey ki4soKey = keyService.findKeyByAppId(appId);
    if(ki4soKey==null){
      logger.log(Level.INFO, "no key for app id {0}", appId);
      throw new NoKi4soKeyException();
    }
    encryCredentialInfo.setAppId(appId);
    encryCredentialInfo.setCreateTime(authentication.getAuthenticatedDate());
    encryCredentialInfo.setUserId(principal.getId());
    encryCredentialInfo.setKeyId(ki4soKey.getKeyId());
    Date expiredTime = new Date((authentication.getAuthenticatedDate().getTime()+DURATION));
    encryCredentialInfo.setExpiredTime(expiredTime);
    return encryCredentialInfo;
  }
View Full Code Here

        //若类型匹配,则进行转换。
        if (credential != null && this.supports(credential)) {
            EncryCredential encryCredential = (EncryCredential) credential;
            DefaultUserPrincipal principal = new DefaultUserPrincipal();
            //解析加密后凭据信息。
            EncryCredentialInfo encryCredentialInfo = encryCredential.getEncryCredentialInfo();
            //设置用户名为唯一标识。
            if (encryCredentialInfo != null) {
                principal.setId(encryCredentialInfo.getUserId());
                //设置参数表为用户属性。
                principal.setAttributes(encryCredential.getParameters());
            }
            return principal;
        }
View Full Code Here

TOP

Related Classes of com.github.ebnew.ki4so.core.model.EncryCredentialInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.