mirror of
https://github.com/bolkedebruin/rdpgw.git
synced 2026-03-28 06:56:34 +00:00
Support for NTLM authentication added (#109)
* Support for NTLM authentication added To support NTLM authentication, a database is added as an authentication source. Currently, only the configuration file is supported as a database. Database authentication supports Basic and NTLM authentication protcols. ServerConfig.BasicAuthEnabled renamed to LocalEnabled as Basic auth can be used with NTLM or Local.
This commit is contained in:
25
cmd/auth/database/config.go
Executable file
25
cmd/auth/database/config.go
Executable file
@@ -0,0 +1,25 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"github.com/bolkedebruin/rdpgw/cmd/auth/config"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
users map[string]config.UserConfig
|
||||
}
|
||||
|
||||
func NewConfig(users []config.UserConfig) *Config {
|
||||
usersMap := map[string]config.UserConfig{}
|
||||
|
||||
for _, user := range users {
|
||||
usersMap[user.Username] = user
|
||||
}
|
||||
|
||||
return &Config{
|
||||
users: usersMap,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Config) GetPassword (username string) string {
|
||||
return c.users[username].Password
|
||||
}
|
||||
43
cmd/auth/database/config_test.go
Normal file
43
cmd/auth/database/config_test.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"github.com/bolkedebruin/rdpgw/cmd/auth/config"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func createTestDatabase () (Database) {
|
||||
var users = []config.UserConfig{}
|
||||
|
||||
user1 := config.UserConfig{}
|
||||
user1.Username = "my_username"
|
||||
user1.Password = "my_password"
|
||||
users = append(users, user1)
|
||||
|
||||
user2 := config.UserConfig{}
|
||||
user2.Username = "my_username2"
|
||||
user2.Password = "my_password2"
|
||||
users = append(users, user2)
|
||||
|
||||
config := NewConfig(users)
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
func TestDatabaseConfigValidUsername(t *testing.T) {
|
||||
database := createTestDatabase()
|
||||
|
||||
if database.GetPassword("my_username") != "my_password" {
|
||||
t.Fatalf("Wrong password returned")
|
||||
}
|
||||
if database.GetPassword("my_username2") != "my_password2" {
|
||||
t.Fatalf("Wrong password returned")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDatabaseInvalidUsername(t *testing.T) {
|
||||
database := createTestDatabase()
|
||||
|
||||
if database.GetPassword("my_invalid_username") != "" {
|
||||
t.Fatalf("Non empty password returned for invalid username")
|
||||
}
|
||||
}
|
||||
5
cmd/auth/database/database.go
Executable file
5
cmd/auth/database/database.go
Executable file
@@ -0,0 +1,5 @@
|
||||
package database
|
||||
|
||||
type Database interface {
|
||||
GetPassword (username string) string
|
||||
}
|
||||
Reference in New Issue
Block a user