STNS API 클라이언트 & 웹 서비스로 STNS 사용자 인증 go-stnsc

13573 단어 LinuxGoLDAPSTNS

go-stnsc는 SNTS API 클라이언트 및 STNS 인증 기능을 제공합니다.


go-stnsc는 STNSv2 JSON 형식을 지원합니다. SNTS 공식 페이지
시대가 추구하는 STNS와 나

개요


STNS는 Linux 사용자 로그인을 목적으로 작성된 인증 프로토콜입니다.
프로토콜은 Linux 사용자의 로그인에 국한되지 않으며, 전체적으로 이름으로 해결할 수 있습니다.
따라서 자체 제작한 웹 서비스의 로그인 인증에도 사용할 수 있습니다.그래서 Golang에서 STNS API를 두드리는 프로그램 라이브러리를 만들었습니다.
또한 STNS 프로토콜은 기본적으로 서버 측의 정보를 얻는 것일 뿐 인증은 클라이언트 측에서 실시해야 한다.방법도 이루어졌다.

실행 예


API

  • Client Code:
  • 다음 STNS 서버를 시작할 때의 실행 결과입니다.  stnsc.conf
    func main() {
        client, err := stnsc.NewClient("http://localhost:1104/v2/", nil)
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
    
        var err error
    
        var attrUsers stns.Attributes
        attrUsers, err = client.User.List()
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
        fmt.Printf("Attributes users : %#v\n", attrUsers)
        fmt.Printf("Attribute user : %#v\n", attrUsers["foo"])
    
        var attrUser *stns.Attribute
        attrUser, err = client.User.Get("foo")
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
        fmt.Printf("Attribute user : %#v\n", attrUser)
        fmt.Printf("user : %#v\n", attrUser.User)
    
        attrUser, err = client.User.GetById(1002)
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
        fmt.Printf("Attribute user : %#v\n", attrUser)
        fmt.Printf("user : %#v\n", attrUser.User)
    }
    
  • Output:
  • Attributes users : stns.Attributes{"bar":(*stns.Attribute)(0xc4200e01e0), "foo":(*stns.Attribute)(0xc4200e02a0)}
    Attribute user : &stns.Attribute{Id:1001, User:(*stns.User)(0xc4200f0180), Group:(*stns.Group)(nil)}
    Attribute user : &stns.Attribute{Id:1001, User:(*stns.User)(0xc420152000), Group:(*stns.Group)(nil)}
    user : &stns.User{Password:"$6$RNqhn2ttIfMcRj4r$Ddnbckw1T1xUkguDWvSsb3GZseoeahRbr27vKbYV9opja2SKWi6y.67YI0yXz8HremKCpJwwFEOqed6Eic9.0.", GroupId:1002, Directory:"/home/foo", Shell:"/bin/bash", Gecos:"description", Keys:[]string{"key"}, LinkUsers:[]string{"linkuser"}}
    Attribute user : &stns.Attribute{Id:1002, User:(*stns.User)(0xc4200f0480), Group:(*stns.Group)(nil)}
    user : &stns.User{Password:"$6$gu42K/pg0o7NBP9O$NshQ3iHO4gE3av9.tkE6DWCgA0h1vG1TzH.SHfQn.TEZpmFBVSD0G7pnH3SGKj22RFz5qiy3ezMg6UQ6JJejE.", GroupId:1002, Directory:"/home/bar", Shell:"/bin/bash", Gecos:"description", Keys:[]string{"key"}, LinkUsers:[]string{"linkuser"}}
    
    또한 STNS 서버는 Basic 인증을 설정할 수 있습니다.이제 사용자와 암호를 다음과 같이 지정하십시오.
    func main() {
            tp := &stnsc.BasicAuthTransport{
                    Username: "basicuser",
                    Password: "basicpass",
            }
    
            client, err := stnsc.NewClient("http://localhost:1104/v2/", tp.Client())
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
    
    다른 API 사용법은 이쪽 example 참조example/main.go

    인증


    웹 서비스를 위한 간편한 로그인 인증 기관

    - Client Code:

    func main() {
        client, err := stnsc.NewClient("http://localhost:1104/v2/", nil)
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
    
        var err error
        var attrUser *stns.Attribute
        attrUser, err = client.User.Authenticate("foo", "foopass")
        if err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
        fmt.Printf("Attribute user : %#v\n", attrUser)
        fmt.Printf("user : %#v\n", attrUser.User)
    }
    

    - Output:

    user : &stns.User{Password:"$6$72qH5tfJta43J1lH$o1OvvIxkDCNZtrAh3UWM9dKkGawTuBeGpLoxRuICH6B/9.Y5PA/bD
    tvm.fK/bB8zFNNofus6jQHXzMyiqCCqj0", GroupId:1001, Directory:"/home/example", Shell:"/bin/bash", Gecsoo:"", Keys:[]string{"ssh-rsa XXXXX…"}, LinkUsers:[]string{"foo"}}
    

    데모


    실제 집행 방법은 다음과 같다.

  • Create STNS Server
  • See docker-compose-stns
  • Client
  • $ go get -v github.com/sona-tar/go-stnsc
    $ cd ${GOPATH}/src/github.com/sona-tar/go-stnsc/example
    $ go run main.go
    

    연관성

  • 웹 서비스를 통해 LDAP 사용자 인증을 실현하는 go-ldapc
  • 좋은 웹페이지 즐겨찾기