mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-16 07:16:38 +00:00
[management, infrastructure, idp] Simplified IdP Management - Embedded IdP (#5008)
Embed Dex as a built-in IdP to simplify self-hosting setup. Adds an embedded OIDC Identity Provider (Dex) with local user management and optional external IdP connectors (Google/GitHub/OIDC/SAML), plus device-auth flow for CLI login. Introduces instance onboarding/setup endpoints (including owner creation), field-level encryption for sensitive user data, a streamlined self-hosting provisioning script, and expanded APIs + test coverage for IdP management. more at https://github.com/netbirdio/netbird/pull/5008#issuecomment-3718987393
This commit is contained in:
@@ -78,16 +78,18 @@ func parseTime(timeString string) time.Time {
|
||||
return parsedTime
|
||||
}
|
||||
|
||||
func (c ClaimsExtractor) audienceClaim(claimName string) string {
|
||||
url, err := url.JoinPath(c.authAudience, claimName)
|
||||
func (c *ClaimsExtractor) audienceClaim(claimName string) string {
|
||||
audienceURL, err := url.JoinPath(c.authAudience, claimName)
|
||||
if err != nil {
|
||||
return c.authAudience + claimName // as it was previously
|
||||
}
|
||||
|
||||
return url
|
||||
return audienceURL
|
||||
}
|
||||
|
||||
// ToUserAuth extracts user authentication information from a JWT token
|
||||
// ToUserAuth extracts user authentication information from a JWT token.
|
||||
// The token should contain standard claims like email, name, preferred_username.
|
||||
// When using Dex, make sure to set getUserInfo: true to have these claims populated.
|
||||
func (c *ClaimsExtractor) ToUserAuth(token *jwt.Token) (auth.UserAuth, error) {
|
||||
claims := token.Claims.(jwt.MapClaims)
|
||||
userAuth := auth.UserAuth{}
|
||||
@@ -120,6 +122,21 @@ func (c *ClaimsExtractor) ToUserAuth(token *jwt.Token) (auth.UserAuth, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// Extract email from standard "email" claim
|
||||
if email, ok := claims["email"].(string); ok {
|
||||
userAuth.Email = email
|
||||
}
|
||||
|
||||
// Extract name from standard "name" claim
|
||||
if name, ok := claims["name"].(string); ok {
|
||||
userAuth.Name = name
|
||||
}
|
||||
|
||||
// Extract name from standard "preferred_username" claim
|
||||
if preferredName, ok := claims["preferred_username"].(string); ok {
|
||||
userAuth.PreferredName = preferredName
|
||||
}
|
||||
|
||||
return userAuth, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user