code: @Override
  	public synchronized Session session() throws AuthenticationException {
  		if (authResult == null || !authenticationService.validate(authResult.getClientToken(), authResult.getAccessToken())) {
  			refresh();
  		}
  		if (authResult == null) {
  			throw new AuthenticationException("no authentication is available");
  		}
  		return authResult;
  	}
docs: Tries to get an available session.
  <p>
  The method will validate the current token first. If the current token is
  not available, {@code YggdrasilAuthenticator} will try refreshing the
  session. (see {@link #refresh()}).
  <p>
  这个方法首先检查当前的 session 是否有效，假若无效则会试着刷新 session （见 {@link #refresh()} ）。
  
  @return an available session
  @throws AuthenticationException if {@code YggdrasilAuthenticator}
  couldn't get an available session
  @see #refresh()