active ldap の事例紹介

19
北海道情報大学|経営情報学部 先端経営学科 谷口文威 ActiveLdap事例紹介

Upload: kazuaki-takase

Post on 19-Jan-2015

1.821 views

Category:

Technology


4 download

DESCRIPTION

RubyKaigi2010 企画 ”Ruby で扱う LDAP のススメ”資料です。 谷口さんにご提供頂いた事例紹介資料です。

TRANSCRIPT

Page 1: Active ldap の事例紹介

北海道情報大学|経営情報学部先端経営学科

谷口文威

ActiveLdapの事例紹介

Page 2: Active ldap の事例紹介

自己紹介谷口文威(たにぐちふみたけ)

北海道情報大学(Goldスポンサー)経営情報学部 先端経営学科 准教授

Webアプリ作成、プログラミング言語を教えてます

Ruby札幌運営メンバー@noplans

Ruby会議2009,2010実行委員

KaigiFreaks配信班

Page 3: Active ldap の事例紹介

ジュンク堂Ruby会議店で売ってます

著者全員、スタッフでRuby会議にいます。見つけてサインをもらおう!

全員分そろえたら、全額キャッシュバック!(先着5名)

買って!

「Ruby逆引きレシピ」書きました

Page 4: Active ldap の事例紹介

本学(北海道情報大学)では、

大学の実習室利用や各種サービス

の利用にLDAPを使っている

背景

Page 5: Active ldap の事例紹介

学内共同研究

学生の資格取得状況

学生のモチベーション増加

資格の各種情報

試験日時・関連する講義

Ruby on Railsでプロトタイプを作成

Page 6: Active ldap の事例紹介
Page 7: Active ldap の事例紹介

認証に利用

学生の情報(氏名)→ DB

LDAPサーバ

Railsログイン時の入力ユーザid → LDAPサーバ、DB

パスワード → LDAPサーバ

Page 8: Active ldap の事例紹介

#113 LDAPのエントリを手軽に扱いたい

参考

Ruby逆引きレシピ

Page 9: Active ldap の事例紹介

LDAP Pass-through Authentication with Authlogic and ActiveLdap

http://www.liveandcode.com/2009/08/30/ldap-pass-through-authentication-with-authlogic-and-activeldap/

参考

Railsでの認証とLDAPライブラリ

Page 10: Active ldap の事例紹介

user_session.rb:

class UserSession < AuthLogic::Session::Base

find_by_login_method :find_or_create_from_ldap

verify_password_method : valid_ldap_credentials?

end

AuthLogicを使って認証 (1)

Page 11: Active ldap の事例紹介

user_session.rb:

class UserSession < AuthLogic::Session::Base

find_by_login_method :find_or_create_from_ldap

verify_password_method : valid_ldap_credentials?

end

AuthLogicを使って認証 (1)

ユーザを探す(ユーザ登録に利用)

認証をLDAP経由に変更

Page 12: Active ldap の事例紹介

user.rb(抜粋):class User < ActiveRecord::Base

acts_as_authentic do |c|

c.validate_password_field = false

end

class << self

def find_or_create_from_ldap(loginname)

find_by_login(loginname) ||create_from_ldap_if_valid(loginname)

end

AuthLogicを使って認証 (2)

Page 13: Active ldap の事例紹介

user.rb(抜粋つづき):def create_from_ldap_if_valid(loginname)

begin

if u = LdapUser.find(loginname)

User.create(

:login => loginname,

:fullname => u.displayName)

end

rescue ActiveLdap::EntryNotFount

nil

end

end

AuthLogicを使って認証 (3)

Page 14: Active ldap の事例紹介

user.rb(抜粋つづき):

def valid_ldap_credentials?(password_plaintext)

ldap_entry = LdapUser.find(self.login)

ldap_entry.bind(password_plaintext)

ldap_entry.remove_connection

true

rescue ActiveLdap::AuthenticationError,ActiveLdap::LdapError::UnwillingToPerform

false

end

AuthLogicを使って認証 (3)

Page 15: Active ldap の事例紹介

ActiveRecordのように使える

ライブラリ

以前にも使ったことがある

そこまでActiveLdapらしさを利用していないので、他のライブラリでも良かったかも

ActiveLdapを使った理由

Page 16: Active ldap の事例紹介

Google Codeにある日本語チュートリアル

http://code.google.com/p/ruby-activeldap/wiki/TutorialJa

参考

作るうえで参考にした情報源

Page 17: Active ldap の事例紹介

困テストってどうやるのか教えてください……

Page 18: Active ldap の事例紹介

ジュンク堂Ruby会議店で売ってます

著者全員、スタッフでRuby会議にいます。見つけてサインをもらおう!

全員分そろえたら、全額キャッシュバック!(先着5名)

買って!

「Ruby逆引きレシピ」書きました

Page 19: Active ldap の事例紹介

12月4日@メディアミックスホール

詳しくは twitter_id @tmaedaに!

札幌Ruby会議