コード例 #1
0
  /**
   * Formats a challenge response as a HTTP Authorization header value needed by ACS Management
   * OData Service
   */
  @Override
  public String formatResponse(
      ChallengeResponse challenge, Request request, Series<Parameter> httpHeaders) {
    ChallengeWriter challengeWriter = new ChallengeWriter();
    challengeWriter.append(challenge.getScheme().getTechnicalName()).appendSpace();

    if (challenge.getRawValue() != null) {
      challengeWriter.append(challenge.getRawValue());
    } else {
      formatRawResponse(challengeWriter, challenge, request, httpHeaders);
    }

    // Get ACS credentails
    String acsNameSpace = challenge.getIdentifier();
    String acsMgmtPassword = new String(challenge.getSecret());

    // Get token from ACS
    String swtToken = getTokenFromACS(acsNameSpace, acsMgmtPassword);

    // Append ACS token to the ChallengeWriter. Restlet library will
    // automatically
    // add this as Authorization HTTP header and use scheme technical name
    // ("bearer").
    return challengeWriter.toString() + swtToken;
  }