STNS API 클라이언트 & 웹 서비스로 STNS 사용자 인증 go-stnsc
go-stnsc는 SNTS API 클라이언트 및 STNS 인증 기능을 제공합니다.
go-stnsc는 STNSv2 JSON 형식을 지원합니다. SNTS 공식 페이지
시대가 추구하는 STNS와 나
개요
STNS는 Linux 사용자 로그인을 목적으로 작성된 인증 프로토콜입니다.
프로토콜은 Linux 사용자의 로그인에 국한되지 않으며, 전체적으로 이름으로 해결할 수 있습니다.
따라서 자체 제작한 웹 서비스의 로그인 인증에도 사용할 수 있습니다.그래서 Golang에서 STNS API를 두드리는 프로그램 라이브러리를 만들었습니다.
또한 STNS 프로토콜은 기본적으로 서버 측의 정보를 얻는 것일 뿐 인증은 클라이언트 측에서 실시해야 한다.방법도 이루어졌다.
실행 예
API
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)
}
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
$ go get -v github.com/sona-tar/go-stnsc
$ cd ${GOPATH}/src/github.com/sona-tar/go-stnsc/example
$ go run main.go
연관성
Reference
이 문제에 관하여(STNS API 클라이언트 & 웹 서비스로 STNS 사용자 인증 go-stnsc), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sonatard/items/f4c505e811be1fb0e70d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)