認証したいユーザー

  • cn=yuta

ldapモジュールをインストール

github.com/go-ldap/ldapを取得します

サンプルコード

パッケージ メイン

インポート (
    "fmt" 
    "github.com/go-ldap/ldap/v3" 
    "log" 
)

var  (
    ldapServer  =  "ldap:// localhost:389" 
    baseDN      =  "dc = vamdemic、dc = black" 
    username  =  " yuta " 
    password  =  "password" 
    bindusername  =  "cn = admin、dc = vamdemic、dc = black" 
    bindpassword  =  「パスワード」

)

//この例は、典型的なアプリケーションがログイン試行を検証する方法を示しています
func  Example_userAuthentication () { 
    l 、 err  :=  ldap 。DialURL (ldapServer )
    if  err  !=  nil  { 
        log 。Fatal (err )
    } 
    defer  l 。閉じる()

    //最初に読み取り専用ユーザー
    err  =  lでバインドします。バインドする(bindusername 、 bindpassword )
    if  err  !=  nil  { 
        log 。致命的(err )
    }

    //指定されたユーザー名
    searchRequest  :=  ldapを検索します。NewSearchRequest (
        ベースDN 、
        LDAP 。ScopeWholeSubtree 、 LDAP 。NeverDerefAliases 、 0 、 0 、 偽、
        FMT 。SPRINTF ("(&(オブジェクトクラス= organizationalPersonを)(CN =%S))" 、
 ユーザ名)、
        [] の文字列{ "DN" } 、
        nil 、
    )

    sr 、 err  :=  l 。検索(searchRequest )
    if  err  !=  nil  { 
        log 。致命的(err )
    }

    場合 でlen (SR 。エントリー) !=  1  { 
        ログ。致命的(「ユーザーが存在しないか、返されるエントリが多すぎます」)
    }

    userdn  :=  sr 。エントリー[ 0 ] 。DN

    //ユーザーとしてバインドして、パスワードを確認します
    err  =  l 。err != nil { logの場合、バインド(userdn 、 パスワード)
    。致命的(err )}    
        
    

    //これ以降のクエリでは、読み取り専用ユーザーとして再バインドします
    err  =  l 。バインドする(bindusername 、 bindpassword )
    if  err  !=  nil  { 
        log 。致命的(エラー)
    } 
}

func  main () { 
    Example_userAuthentication ()
}

<スポンサーリンク>

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)