ラベル 認証 の投稿を表示しています。 すべての投稿を表示
ラベル 認証 の投稿を表示しています。 すべての投稿を表示

2009年10月8日木曜日

GAE+Flex+ファイルアップロード+認証

GAE上でFlexを使用してファイルアップロードを行っているのですが
どうもうまくいかない状態でした。
まぁオススメはできませんが回避策を一応書いておきます。

FireReference.uploadはセキュリティ系の問題なのか
クッキーを送信できません。
ここのにupload()のURLRequestHeaderのところに記述があります。

GAEでは認証アプリ内ではクッキーを使用して認証を確認しているようで
JSESSIONIDとACSIDを送信することが不可能なようです。

なのでGAE上でFileReferenceを利用してアップロードをすると
アップロード時に認証エラーでアップロードができないようです。

そこで、私の場合はアップロードのURLを認証から外して独自認証することで切り抜けました。
Flexが送信するRequestに引数をjsessionidを指定しておいて
認証のかかってないURLの処理上でSessionからIDを取得して同一かを判定して切り抜けました。

まぁセキュリティ上は微妙でしょうけど、
一応認証を受けてないと使えないようにはしました。



で、、、ここで気をつけなければいけないのは
FileReferenceで渡すURLRequest.dataをObjectではなく、
URLVariablesにすることです。
そうしないとRequestでmultipartにならず、
multipartで値を受け取れないからです。(slim3)

2009年6月21日日曜日

SVNの設定(認証)

さて、SVNのインストールが終わったので設定します。
Apacheのhttpd.confに

<Location /svn/mog>
DAV svn
SVNPath /home/svn/mog
</Location>

を追加します。


svnadmin create /home/svn/mog


を行うとリポジトリが作成されます。
これでクライアントからアクセスできるはずですが
apacheの起動ユーザに対して権限があることが条件です。


さてDIGEST認証を使うにはApacheにDIGEST認証モジュールが必要です。
※Apacheのモジュールでインストールしてあれば問題ありません。

ソースのmodules/aaaに移動して

/usr/local/apache2/bin/apxs -D DEV_RANDOM -c ./mod_auth_digest.c
/usr/local/apache2/bin/apxs -i -a -n auth_digest mod_auth_digest.la


と行うとhttpd.confにLoadModuleが追加されるはずです。
これで準備はOK

Apacheに

<Location /svn/test>

DAV svn
SVNPath /home/svn/test

AuthType Digest
AuthName "SVN AUTH"
AuthUserFile /home/svn/.htdigest
Require valid-user

</Location>


って感じで追加します。


htdigest -c /home/svn/.htdigest "SVN AUTH" username


でパスワードを入力してApacheを再起動します。
で再起動すればOKです。

2009年5月31日日曜日

Slim3でユーザの検索


すでにこの設定などは古くなっている可能性があります。

Slim3の開発はこんなブログより正式ドキュメントが有効です。
Slim3サイト
非公式と言われていますが充実した日本語サイトもあります。
Slim3日本語サイト




UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

ShopMeta shopMeta = new ShopMeta();
List<Shop> list = from(Shop.class).where(shopMeta.creator.eq(user)).getResultList();


ShopMetaは自動的に作られます。(aptとかをプロジェクトで設定します)
creatorはJDOで保存しているカラムの一部です。
※aptについては今勉強中です。後日設定方法を書きます。

なんかおしゃれになってきましたね。
もし私がゴクウだったら「おらワクワクしてきたぞ状態」です。

2009年4月20日月曜日

GAEで認証アプリケーション(続)

さて情報の取得方法は前項でやりました。

大事なのはアプリケーションを認証で守ることです。
※前項では認証を行っただけ

日頃からJ2EEの認証JAAS使っといてよかった。


<security-constraint>
<web-resource-collection>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>


とweb.xmlに記述すると
/secure/~というURLは認証を通らないといけなくなります。

JSPなどにこのURLに関係するリンクを貼り、押下してみると
認証されないと行けないことがわかります。

なお、role-nameで「*」を指定していますが
アプリケーションの設定で管理者になっている「admin」というロールと
世間一般のGoogleアカウントがあるようです。(こっちは不明)

2009年4月19日日曜日

GAEで認証アプリケーション

GoogleAppEngineで認証できるアプリケーションを作成してみましょう!

サンプルにもある通り、

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();


と行うとユーザがログインしているかどうかがわかります。
userがnullの場合はログインしてない状況です。


userService.createLogoutURL(request.getRequestURI()
userService.createLoginURL(request.getRequestURI())


と行うとログイン、ログアウトのパスを取得できるので
それに対してAタグを書いてあげます。

引数の「request.getRequestURI()」は
ログイン後に戻るページですので変更すれば画面の遷移を変えることができます。


ここで彷徨ってしまったのは
独自ドメイン時のログイン画面です。
私の作ったアプリケーションの認証を作成しようとしたら
GoogleAppsの認証画面が出てきました。

「えー独自ドメインは自分のドメインの認証なのっ!」


・・・と勘違いしちゃいましたが違いました。
どうやらアプリケーションを作成した時に


でドメイン認証をチェックしたみたいです。
・・・1時間位さまよいました。。。
逆に考えれば独自認証のアプリも作れるってことですね!




はてさて情報の取得やログインへの遷移は可能になりましたが
大事なのはアプリケーションのセキュリティです。

・・・ってJAASを使用した方なら簡単ですね。
web.xmlを設定してあげればOKです。


ほぼ
ここと同じだと思いますが
server.xmlはいらないし「manage」っていうロールはないですね。
adminはアプリの管理者がそういう扱いになりそうです。

2008年12月6日土曜日

Tomcatで認証

「認証情報がなければ、FORMページへリダイレクト」といった
アプリケーションはしばしば見受けられますが、
Tomcat(他を知りませんが)はweb.xmlの編集で認証を
フォルダ、ファイル単位でかけることが可能になります。


それではPostgreSQLのテーブルを使って認証してみましょう。

データベース作成はPostgreSQLの項にありますので見てみてください。
Tomcat5だと./common/libに
JDBCドライバが存在する事が条件です。
Tomcat6では./libになります。

server.xml内にある200行目位です。

 <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
        driverName="org.postgresql.Driver" 
          connectionURL="jdbc:postgresql://サーバ名/データベース名?
          user=ユーザ&password=パスワード"
        userTable="users"
        userNameCol="user_name"
        userCredCol="user_pass"
        userRoleTable="user_roles"
        roleNameCol="role_name"/>

って感じで編集します。

その後、アプリケーションのweb.xmlにおいて以下を追加します。


  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Volunteer Manager ID</web-resource-name>
      <url-pattern>/manage/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
      <role-name>design</role-name>
    </auth-constraint>
  </security-constraint>
  
  <login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>Volunteer Manager ID</realm-name>
  </login-config>

  <security-role>
    <role-name>admin</role-name>
    <role-name>design</role-name>
  </security-role>


これで指定したパスはセキュリティがかかります。