2011-06-28 5 views
3

RESTEasy構成(2. *を使用)またはjax-rs内にRESTベースのWebサービスへのHTTPアクセスを許可しない方法がありますか?私はhttpsの下でWebサービスエンドポイントにしかサービスしません。HTTPSとRESTEasy

答えて

3

からこれを引っ張っ私はこれをしなかったかのweb.xml

<security-constraint> 
<web-resource-collection> 
<web-resource-name>securedapp</web-resource-name> 
<url-pattern>/*</url-pattern> 
</web-resource-collection> 
<user-data-constraint> 
<transport-guarantee>CONFIDENTIAL</transport-guarantee> 
</user-data-constraint> 
</security-constraint> 

に以下を追加します。処理要求。

tapestry-resteasyインテグレーションを使用し、これをtapestry service advisorsを使用して実装しました。

3

私は、この構成がRESTEasy側ではなく、サーブレットコンテナまたはWebサーバーであるべきだと考えます。

たとえば、Tomcatを実行する場合は、server.xmlで8080ポートからコネクタを削除し、8443ポート用に1つを定義します。だから、Tomcatはもうhttpトラフィックを受け付けません。

4

tomcatでは、ポート単位で行われます。これを設定するには3つのステップがあるように見えます。

1)KeyStoreファイルの作成。私は、このコマンドはTomcatの

2)Tomcatの

<Connector port=”PORT_TO_BE_SCURED” maxThreads="200" 
scheme="https" secure="true" SSLEnabled="true" 
keystoreFile../webapps/presto.bin " keystorePass="prestoAdmin" 
clientAuth="false" sslProtocol="TLS"/> 

3のserver.xmlの設定のディレクトリのwebappsに

Keytool –genkey –alias presto –keypass prestoAdmin –keystore presto.bin –storepass prestoAdmin 

コピーpresto.binファイルを以下のとおりであるGENするためにJavaを使用しましたセキュリティで保護された接続を使用するようにWebサービスを設定する。

HttpServletRequest httpServletRequest = 
    ResteasyProviderFactory.getContextData(HttpServletRequest.class); 
HttpServletResponse httpServletResponse = 
    ResteasyProviderFactory.getContextData(HttpServletResponse.class); 

if (!httpServletRequest.isSecure()) 
{ 
    try 
    { 
     httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "Use HTTPS"); 
    } 
    catch (IOException e) 
    { 
     throw new WebApplicationException(e); 
    } 
} 

これは純粋-RESTEasyのソリューションであり、あなたが前にどこかにこのコードを配置することができます:私はここにhttp://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html