Devel Grailsアプリケーションを単一のHTPassWDのようなパスワードで保護します

StackOverflow https://stackoverflow.com/questions/4268306

質問

パブリックドメインの同僚にGrailsアプリを見せています。これまでのところ、私はDevel Modeで作業しており、戦争で展開していません。

Onybodyがチェックアウト /プレイしないようにするために、アプリケーションを保護する必要があります。私はすでにユーザーMGMTを導入していますが、SBが何かを見る前に.htpasswdのような保護を持ちたいと思います。可能であれば、アプリケーション自体をプラグインで拡大したくありません(たとえば、Shiro)。

何か考え/提案はありますか?

どうもありがとう!

役に立ちましたか?

解決

HTTP認証を使用できます。 HTTP認証は実装が簡単ですが、あまり安全でも使用もありません。 ShiroまたはSpring-Securityを使用して、実際のソリューションを使用する方が良いでしょう。とはいえ、単純なフィルターでは、HTTP認証ヘッダーをチェックし、存在しない場合は401ステータスコードを返すことができます。これにより、ブラウザはユーザー名/パスワードボックスをポップアップさせ、ヘッダーにエンコードされたユーザー名とパスワードを使用してフォームを再サブミングします。

Grailsフィルターには、「フィルター」で終了し、Grails-App/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
            }
        }
    }
}

他のヒント

以下を$ catalina_home/に追加しますconf/tomcat-users.xml トムキャットを再起動します:

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

Grails Project Rootで、実行してください grails install-templates. 。これは配置されます SRC/TEMPLATES/WAR/WEB.XML プロジェクトに。
(IDEにファイルが表示されていない場合、これはバグかもしれません。次に、ファイルシステムで見つけます。)

以下を追加しますweb.xml (の子供として web-app 鬼ごっこ) :

<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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top