0

以下のコードを web.xml に貼り付けて、特定のアドレスの基本認証用に apache tomcat web.xml を構成しました。

<security-constraint>
    <web-resource-collection>
      <web-resource-name> 
        Protected Site 
      </web-resource-name>
      <!-- This would protect the entire site -->
      <url-pattern> /Documents/* </url-pattern>
      <!-- If you list http methods, 
            only those methods are protected -->
      <http-method> DELETE </http-method>
      <http-method> GET </http-method>
      <http-method> POST </http-method>
      <http-method> PUT </http-method>
    </web-resource-collection>
    <auth-constraint>
      <!-- Roles that have access -->
      <role-name>role1</role-name>
    </auth-constraint>
  </security-constraint>

  <!-- BASIC authentication -->
  <login-config>
    <auth-method> BASIC </auth-method>
    <realm-name>Authentication </realm-name>
  </login-config>

  <!-- Define security roles -->
  <security-role>
    <description> Test role </description>
    <role-name>role1</role-name>
  </security-role>

ユーザー名とパスワードを取得するためのブラウザの基本認証ダイアログが表示されました。正しいユーザー名とパスワードの後、私は認証され、そうでなければドキュメントを見ることができます。

これですべてが正常に動作しますが、「Adobe flex プログラミングを使用してこの認証をバイパスしたい、つまり、flex コードでユーザー名 N パスワードを指定することで、このダイアログが表示されないようにし、ユーザーがコードによって認証されるようにしたい。」

4

2 に答える 2

0

オブジェクトに認証ヘッダーを追加する必要がありservice:HTTPServiceます。

import mx.utils.Base64Encoder;
private function addAuthenticationHeader(service:HTTPService):void
{
        var encoder:Base64Encoder = new Base64Encoder();
        encoder.insertNewLines = false;
        encoder.encode("django:reinhardt");
        service.headers = {Authorization:"Basic " + encoder.toString()};                                                
        service.send();
}

編集:何を達成したいですか?

  • Flexで保護されたURLの結果を取得したい
  • 何らかの方法でユーザーを認証してから、保護されたページに移動 (ブラウザーの URL を変更) したいですか?

私の意見では、Basic-Authentication (BA) は Cookie やセッション ID に依存しないため、1 は不可能です。ブラウザが保護されたすべてのページでパスワードを要求しない場合、これは、特にフラッシュを使用して、すべてのページ コンポーネントで共有されていない内部セッションに BA ヘッダーが保存されているためです (明らかなセキュリティ上の理由から...)。

それが 2 番目のオプションである場合は、すべてを含みhttps//django:reinhardt@localhost/myApp/Documents/mySecret.mp3、ブラウザーによってマップされるような URL を使用する必要があります。

ハイ

于 2013-09-05T07:16:29.567 に答える