2010-11-24 11 views
5

パブリックドメインの一部の同僚にgrailsアプリを公開しています。今のところ、私はdevelモードで働いており、戦争によって展開していません。devel grailsアプリケーションをパスワードのような単一のhtpasswdで保護する

私はそれで遊んで/それをチェックアウトからonybody維持するために、アプリケーションを保護する必要があります。私はすでに場所にユーザーmgmtを持っていますが、sbが何かを見る前に私は.htpasswdのような保護をしたいと思っています。可能であれば、私はプラグイン(例えば、shiro)でアプリケーション自体を拡大したくありません。

ご意見/ご提案はありますか?

ありがとうございます!

答えて

5

あなたはHTTP認証を使用することができます。 HTTP認証は実装するのが簡単ではありませんが、あまり安全ではありません。実際のソリューションには、shiroやspring-securityを使用する方がよいでしょう。つまり、シンプルなフィルタでHTTP認証ヘッダーを確認し、存在しない場合は401ステータスコードを返すことができます。そうすれば、ブラウザはユーザー名/パスワードボックスをポップアップし、ヘッダーにエンコードされたユーザー名とパスワードでフォームを再送信します。

Grailsのフィルタは「フィルタ」で終わるクラス名を持っているとGrailsアプリ/ confディレクトリに移動する必要があります。

class SimpleAuthFilters { 
    def USERNAME = "foo" 
    def PASSWORD = "bar" 

    static filters = { 
     httpAuth(uri:"/**") { 
      before = { 
       def authHeader = request.getHeader('Authorization') 
       if (authHeader) { 
        def usernamePassword = new String(authHeader.split(' ')[1].decodeBase64()) 
        if (usernamePassword == "$USERNAME:$PASSWORD") { 
         return true 
        } 
       } 
       response.setHeader('WWW-Authenticate', 'basic realm="myRealm"') 
       response.sendError(response.SC_UNAUTHORIZED) 
       return false 
      } 
     } 
    } 
} 
+0

ありがとう、それは私が探していたものでした。私はセキュリティのレベルを認識しています - そして、これは人々が単にURLを覚えてテストするのを妨げることを確かめます... – fluxon

4

は$ CATALINA_HOME/confに/tomcatに-users.xmlのに以下を追加して、Tomcatを再起動します。あなたのGrailsプロジェクトのルートに

<role rolename="role1"/> 
<user username="user1" password="password1" roles="role1"/> 

を、grails install-templatesを実行します。これにより、src/templates/war/web.xmlがプロジェクトに追加されます。 (web-appタグの子として)
(。。場合はファイルがIDEに表示されていない、これはバグかもしれませんし、ファイルシステムでそれを見つける。)

Add the followingにweb.xmlの

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name> 
     Entire Application 
    </web-resource-name> 
    <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>role1</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>Restricted Area</realm-name> 
</login-config> 
+1

この答えは、彼はTomcatを使っている仮定を行う、と私は彼が戦争を使用していないとGrailsは、Tomcatで実行-app'をdevの '実行については何も言及していないので、彼はない感覚を得る:ここでは例です。しかし、私はこの回答が自分にとって有益であると感じています。そして、tomcatで戦争を使うと同じことをしました。 –

+0

まさに、ロブ!しかし、ソリューションのように、私は "本当のために"アプリをセットアップすると切り替える可能性があります。 – fluxon

関連する問題