Java Code Examples for javax.ws.rs.core.HttpHeaders#HOST

The following examples show how to use javax.ws.rs.core.HttpHeaders#HOST . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TableauResource.java    From dremio-oss with Apache License 2.0 6 votes vote down vote up
/**
 * returns a Tableau export for the dataset
 * @return
 * @throws DatasetNotFoundException
 * @throws NamespaceException
 */
@GET
@Produces({APPLICATION_TDS, APPLICATION_TDS_DRILL})
public Response get(@HeaderParam(HttpHeaders.HOST) String host) throws DatasetNotFoundException, NamespaceException {
  // make sure path exists
  DatasetConfig datasetConfig = namespace.getDataset(datasetPath.toNamespaceKey());

  ResponseBuilder builder =  Response.ok().entity(datasetConfig);
  if (host == null) {
    return builder.build();
  }

  final String hostOnly;
  int portIndex = host.indexOf(":");
  if (portIndex == -1) {
    hostOnly = host;
  } else {
    hostOnly = host.substring(0, portIndex);
  }

  builder.header(WebServer.X_DREMIO_HOSTNAME, hostOnly);

  return builder.build();
}
 
Example 2
Source File: ErrorHtmlResource.java    From io with Apache License 2.0 5 votes vote down vote up
/**
 * GET request.
 * @param host Host header
 * @param code query parameter
 * @param uriInfo context
 * @return JAX-RS Response Object
 */
@GET
public final Response implicitError(@HeaderParam(HttpHeaders.HOST) final String host,
        @QueryParam(Key.CODE) final String code,
        @Context final UriInfo uriInfo) {

    // エラーHTMLの返却
    ResponseBuilder rb = Response.ok().type(MediaType.TEXT_HTML);
    return rb.entity(this.htmlForCode(code))
            .header("Content-Type", "text/html; charset=UTF-8").build();
}
 
Example 3
Source File: TokenEndPointResource.java    From io with Apache License 2.0 4 votes vote down vote up
/**
 * 認証のエンドポイント. <h2>トークンの発行しわけ</h2>
 * <ul>
 * <li>dc_targetにURLが書いてあれば、そのCELLをTARGETのCELLとしてtransCellTokenを発行する。</li>
 * <li>scopeがなければCellLocalを発行する。</li>
 * </ul>
 * @param uriInfo URI情報
 * @param authzHeader Authorization ヘッダ
 * @param grantType クエリパラメタ
 * @param username クエリパラメタ
 * @param password クエリパラメタ
 * @param dcTarget クエリパラメタ
 * @param dcOwner クエリパラメタ
 * @param assertion クエリパラメタ
 * @param refreshToken クエリパラメタ
 * @param clientId クエリパラメタ
 * @param clientSecret クエリパラメタ
 * @param dcCookie クエリパラメタ
 * @param idToken IDトークン
 * @param host Hostヘッダ
 * @return JAX-RS Response Object
 */
@POST
public final Response auth(@Context final UriInfo uriInfo,
        @HeaderParam(HttpHeaders.AUTHORIZATION) final String authzHeader,
        @FormParam(Key.GRANT_TYPE) final String grantType,
        @FormParam(Key.USERNAME) final String username,
        @FormParam(Key.PASSWORD) final String password,
        @FormParam(Key.TARGET) final String dcTarget,
        @FormParam(Key.OWNER) final String dcOwner,
        @FormParam(Key.ASSERTION) final String assertion,
        @FormParam(Key.REFRESH_TOKEN) final String refreshToken,
        @FormParam(Key.CLIENT_ID) final String clientId,
        @FormParam(Key.CLIENT_SECRET) final String clientSecret,
        @FormParam("dc_cookie") final String dcCookie,
        @FormParam(Key.ID_TOKEN) final String idToken,
        @HeaderParam(HttpHeaders.HOST) final String host) {

    // Accept unit local scheme url.
    String target = UriUtils.convertSchemeFromLocalUnitToHttp(cell.getUnitUrl(), dcTarget);
    // dc_target がURLでない場合はヘッダInjectionの脆弱性を産んでしまう。(改行コードが入っているなど)
    target = this.checkDcTarget(target);

    if (null != dcTarget) {
        issueCookie = false;
    } else {
        issueCookie = Boolean.parseBoolean(dcCookie);
        requestURIInfo = uriInfo;
    }

    String schema = null;
    // まずはClient認証したいのかを確認
    // ScopeもauthzHeaderもclientIdもない場合はClient認証しないとみなす。
    if (clientId != null || authzHeader != null) {
        schema = this.clientAuth(clientId, clientSecret, authzHeader);
    }

    if (OAuth2Helper.GrantType.PASSWORD.equals(grantType)) {
        // 通常のパスワード認証
        Response response = this.handlePassword(target, dcOwner, host, schema, username, password);

        // パスワード認証が成功した場合はアカウントの最終ログイン時刻を更新する
        // パスワード認証が成功した場合のみ、ここを通る(handlePassword内でエラーが発生すると、例外がthrowされる)
        if (DcCoreConfig.getAccountLastAuthenticatedEnable()) {
            // Accountのスキーマ情報を取得する
            DcODataProducer producer = ModelFactory.ODataCtl.cellCtl(cell);
            EdmEntitySet esetAccount = producer.getMetadata().getEdmEntitySet(Account.EDM_TYPE_NAME);
            OEntityKey originalKey = OEntityKey.parse("('" + username + "')");
            // 最終ログイン時刻の変更をProducerに依頼(このメソッド内でロックを取得・解放)
            producer.updateLastAuthenticated(esetAccount, originalKey, accountId);
        }
        return response;
    } else if (OAuth2Helper.GrantType.SAML2_BEARER.equals(grantType)) {
        return this.receiveSaml2(target, dcOwner, schema, assertion);
    } else if (OAuth2Helper.GrantType.REFRESH_TOKEN.equals(grantType)) {
        return this.receiveRefresh(target, dcOwner, host, refreshToken);
    } else if (OAuth2Helper.GrantType.DC1_OIDC_GOOGLE.equals(grantType)) {
        return this.receiveIdTokenGoogle(target, dcOwner, schema, username, idToken, host);
    } else {
        throw DcCoreAuthnException.UNSUPPORTED_GRANT_TYPE.realm(this.cell.getUrl());
    }
}
 
Example 4
Source File: AuthzEndPointResource.java    From io with Apache License 2.0 4 votes vote down vote up
/**
 * 認証のエンドポイント. <h2>トークンの発行しわけ</h2>
 * <ul>
 * <li>dc_targetにURLが書いてあれば、そのCELLをTARGETのCELLとしてtransCellTokenを発行する。</li>
 * </ul>
 * @param authzHeader Authorization ヘッダ
 * @param dcOwner フォームパラメタ
 * @param username フォームパラメタ
 * @param password フォームパラメタ
 * @param dcTarget フォームパラメタ
 * @param assertion フォームパラメタ
 * @param clientId フォームパラメタ
 * @param responseType フォームパラメタ
 * @param redirectUri フォームパラメタ
 * @param host Hostヘッダ
 * @param cookieRefreshToken クッキー
 * @param keepLogin フォームパラメタ
 * @param state フォームパラメタ
 * @param isCancel Cancelフラグ
 * @param uriInfo コンテキスト
 * @return JAX-RS Response Object
 */
@POST
public final Response authPost(@HeaderParam(HttpHeaders.AUTHORIZATION) final String authzHeader,
        @FormParam(Key.OWNER) final String dcOwner,
        @FormParam(Key.USERNAME) final String username,
        @FormParam(Key.PASSWORD) final String password,
        @FormParam(Key.TARGET) final String dcTarget,
        @FormParam(Key.ASSERTION) final String assertion,
        @FormParam(Key.CLIENT_ID) final String clientId,
        @FormParam(Key.RESPONSE_TYPE) final String responseType,
        @FormParam(Key.REDIRECT_URI) final String redirectUri,
        @HeaderParam(HttpHeaders.HOST) final String host,
        @HeaderParam(Key.SESSION_ID) final String cookieRefreshToken,
        @FormParam(Key.KEEPLOGIN) final String keepLogin,
        @FormParam(Key.STATE) final String state,
        @FormParam(Key.CANCEL_FLG) final String isCancel,
        @Context final UriInfo uriInfo) {

    return auth(dcOwner, username, password, dcTarget, assertion, clientId, responseType, redirectUri, host,
            cookieRefreshToken, keepLogin, state, isCancel, uriInfo);
}
 
Example 5
Source File: AuthzEndPointResource.java    From io with Apache License 2.0 4 votes vote down vote up
/**
 * 認証のエンドポイント. <h2>トークンの発行しわけ</h2>
 * <ul>
 * <li>dc_targetにURLが書いてあれば、そのCELLをTARGETのCELLとしてtransCellTokenを発行する。</li>
 * </ul>
 * @param authzHeader Authorization ヘッダ
 * @param dcTarget クエリパラメタ
 * @param dcOwner クエリパラメタ
 * @param assertion クエリパラメタ
 * @param clientId クエリパラメタ
 * @param responseType クエリパラメタ
 * @param redirectUri クエリパラメタ
 * @param host Hostヘッダ
 * @param cookieRefreshToken クッキー
 * @param keepLogin クエリパラメタ
 * @param state クエリパラメタ
 * @param isCancel Cancelフラグ
 * @param uriInfo コンテキスト
 * @return JAX-RS Response Object
 */
@GET
public final Response authGet(@HeaderParam(HttpHeaders.AUTHORIZATION) final String authzHeader,
        @QueryParam(Key.TARGET) final String dcTarget,
        @QueryParam(Key.OWNER) final String dcOwner,
        @QueryParam(Key.ASSERTION) final String assertion,
        @QueryParam(Key.CLIENT_ID) final String clientId,
        @QueryParam(Key.RESPONSE_TYPE) final String responseType,
        @QueryParam(Key.REDIRECT_URI) final String redirectUri,
        @HeaderParam(HttpHeaders.HOST) final String host,
        @HeaderParam(Key.SESSION_ID) final String cookieRefreshToken,
        @QueryParam(Key.KEEPLOGIN) final String keepLogin,
        @QueryParam(Key.STATE) final String state,
        @QueryParam(Key.CANCEL_FLG) final String isCancel,
        @Context final UriInfo uriInfo) {

    return auth(dcOwner, null, null, dcTarget, assertion, clientId, responseType, redirectUri, host,
            cookieRefreshToken, keepLogin, state, isCancel, uriInfo);

}