Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add to Authenticate more options #102

Closed
vitalvas opened this issue Sep 12, 2022 · 5 comments
Closed

Add to Authenticate more options #102

vitalvas opened this issue Sep 12, 2022 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@vitalvas
Copy link

Hi.

Please, add to auth Authenticate interface more options.

I think Authenticate interface can be changed to next:

type AuthRequest struct {
	Remote   string
	ClientID string
	User     []byte
	Password []byte
}

type Controller interface {
	Authenticate(req AuthRequest) bool
...
}
@mochi-co mochi-co added the enhancement New feature or request label Sep 13, 2022
@mochi-co
Copy link
Collaborator

@vitalvas Given that Remote and ClientID are both fields of events.Client, I am tempted to pass that directly to both Authenticate and ACL 🤔

The next release will be v1.4.0 and dealing with #101, so I will make this change then 👍🏻

@mochi-co mochi-co self-assigned this Sep 13, 2022
@mochi-co
Copy link
Collaborator

An enhanced auth mechanism will delivered in the new v2.0.0 release that will satisfy this request

@oliverpool
Copy link

@mochi-co I discovered your project recently and it looks very neat!

Regarding the Authenticate interface, it could probably be replaced with a function:

// AuthenticateFunc should return ErrAuthBadUsernameOrPassword or ErrAuthNotauthorized
// to reply with a CONNACK and terminate. Any other non-nil error will immediately terminate the connection.
type AuthenticateFunc func(authRequest) (ACL, error)

type ACL interface {
	CanSubscribe(topic string) bool
	CanPublish(topic string) bool
}

var ErrAuthBadUsernameOrPassword = errors.New("bad user name or password")
var ErrAuthNotauthorized = errors.New("not authorized")

Regarding the v2, do you plan to share a branch or some alpha version?

@mochi-co
Copy link
Collaborator

mochi-co commented Oct 3, 2022

Thanks @oliverpool! For v2 I am hoping to issue a pre-release in the near (but indeterminate) future. It's a fairly substantial rewrite for stability, performance, and developer flexibility. I am also currently looking at whether it is feasible to implement MQTT 5 as part of this release, but I need to assess the total changes required.

@mochi-co
Copy link
Collaborator

This issue has been resolved in v2.0.0 with the addition of universal hooks (particularly OnConnectAuthenticate).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants