code: @Override
      @FFDCIgnore(WSLoginFailedException.class)
      public boolean login() throws WSLoginFailedException {
          try {
              userRegistry = getUserRegistry();
              Map trustState = (Map) sharedState.get(KEY_TRUST_STATE);
              setUserNameFromDataInTrustState(trustState);
              setUpTemporarySubject();
          } catch (WSLoginFailedException e) {
              // NO FFDC: WSLoginFailedException are expected
              throw e; // no-need to wrap
          } catch (Exception e) {
              throw new WSLoginFailedException(e.getLocalizedMessage());
          }
          return true;
      }
docs: <p>
  Method to authenticate a Subject (first phase).
  </p>
  
  <p>
  This method authenticates a Subject. It uses the Map stored in the shared state property com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state.
  The com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trusted key in the Map is used to determine trust. If true
  then trusted if false then it not trusted. When trust is established then the principal stored in either the
  com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.principal or com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.certificates
  key will contain the identity to login as.
  </p>
  
  @return <code><b>true</b></code> if the authentication succeeded, or <code><b>false</b></code>
  if this login module should be ignored.
  @exception WSLoginFailedException
  If the authentication fails.