2022-03-06 17:55:17 +08:00
|
|
|
//go:build pam
|
2015-04-23 13:58:57 +02:00
|
|
|
|
|
|
|
|
package pam
|
|
|
|
|
|
|
|
|
|
import (
|
2026-01-22 08:20:53 -05:00
|
|
|
"github.com/cockroachdb/errors"
|
2015-04-23 13:58:57 +02:00
|
|
|
"github.com/msteinert/pam"
|
|
|
|
|
)
|
|
|
|
|
|
2020-09-20 11:19:02 +08:00
|
|
|
func (c *Config) doAuth(login, password string) error {
|
|
|
|
|
t, err := pam.StartFunc(c.ServiceName, login, func(s pam.Style, msg string) (string, error) {
|
2015-04-23 13:58:57 +02:00
|
|
|
switch s {
|
|
|
|
|
case pam.PromptEchoOff:
|
2020-09-20 11:19:02 +08:00
|
|
|
return password, nil
|
2015-04-23 13:58:57 +02:00
|
|
|
case pam.PromptEchoOn, pam.ErrorMsg, pam.TextInfo:
|
|
|
|
|
return "", nil
|
|
|
|
|
}
|
2020-09-20 11:19:02 +08:00
|
|
|
return "", errors.Errorf("unrecognized PAM message style: %v - %s", s, msg)
|
2015-04-23 13:58:57 +02:00
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2022-03-08 20:35:31 +08:00
|
|
|
|
2022-03-08 13:02:01 +01:00
|
|
|
err = t.Authenticate(0)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
return t.AcctMgmt(0)
|
2015-04-23 13:58:57 +02:00
|
|
|
}
|