mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-11-04 10:01:05 +01:00 
			
		
		
		
	Merge pull request #829 from kradalby/oidc-dependency
This commit is contained in:
		
						commit
						5f975cbb50
					
				@ -17,6 +17,7 @@
 | 
			
		||||
- Added support for JSON logs [#653](https://github.com/juanfont/headscale/issues/653)
 | 
			
		||||
- Add support for generating pre-auth keys with tags [#767](https://github.com/juanfont/headscale/pull/767)
 | 
			
		||||
- Add support for evaluating `autoApprovers` ACL entries when a machine is registered [#763](https://github.com/juanfont/headscale/pull/763)
 | 
			
		||||
- Add config flag to allow Headscale to start if OIDC provider is down [#829](https://github.com/juanfont/headscale/pull/829)
 | 
			
		||||
 | 
			
		||||
## 0.16.4 (2022-08-21)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								app.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								app.go
									
									
									
									
									
								
							@ -192,8 +192,10 @@ func NewHeadscale(cfg *Config) (*Headscale, error) {
 | 
			
		||||
 | 
			
		||||
	if cfg.OIDC.Issuer != "" {
 | 
			
		||||
		err = app.initOIDC()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
		if err != nil && cfg.OIDC.OnlyStartIfOIDCIsAvailable {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		} else {
 | 
			
		||||
			log.Warn().Err(err).Msg("failed to set up OIDC provider, falling back to CLI based authentication")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -230,6 +230,7 @@ unix_socket_permission: "0770"
 | 
			
		||||
# help us test it.
 | 
			
		||||
# OpenID Connect
 | 
			
		||||
# oidc:
 | 
			
		||||
#   only_start_if_oidc_is_available: true
 | 
			
		||||
#   issuer: "https://your-oidc.issuer.com/path"
 | 
			
		||||
#   client_id: "your-oidc-client-id"
 | 
			
		||||
#   client_secret: "your-oidc-client-secret"
 | 
			
		||||
 | 
			
		||||
@ -90,6 +90,7 @@ type LetsEncryptConfig struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type OIDCConfig struct {
 | 
			
		||||
	OnlyStartIfOIDCIsAvailable bool
 | 
			
		||||
	Issuer                     string
 | 
			
		||||
	ClientID                   string
 | 
			
		||||
	ClientSecret               string
 | 
			
		||||
@ -174,6 +175,7 @@ func LoadConfig(path string, isFile bool) error {
 | 
			
		||||
 | 
			
		||||
	viper.SetDefault("oidc.scope", []string{oidc.ScopeOpenID, "profile", "email"})
 | 
			
		||||
	viper.SetDefault("oidc.strip_email_domain", true)
 | 
			
		||||
	viper.SetDefault("oidc.only_start_if_oidc_is_available", true)
 | 
			
		||||
 | 
			
		||||
	viper.SetDefault("logtail.enabled", false)
 | 
			
		||||
	viper.SetDefault("randomize_client_port", false)
 | 
			
		||||
@ -559,6 +561,9 @@ func GetHeadscaleConfig() (*Config, error) {
 | 
			
		||||
		UnixSocketPermission: GetFileMode("unix_socket_permission"),
 | 
			
		||||
 | 
			
		||||
		OIDC: OIDCConfig{
 | 
			
		||||
			OnlyStartIfOIDCIsAvailable: viper.GetBool(
 | 
			
		||||
				"oidc.only_start_if_oidc_is_available",
 | 
			
		||||
			),
 | 
			
		||||
			Issuer:           viper.GetString("oidc.issuer"),
 | 
			
		||||
			ClientID:         viper.GetString("oidc.client_id"),
 | 
			
		||||
			ClientSecret:     viper.GetString("oidc.client_secret"),
 | 
			
		||||
 | 
			
		||||
@ -35,6 +35,7 @@ logtail:
 | 
			
		||||
  enabled: false
 | 
			
		||||
metrics_listen_addr: 127.0.0.1:19090
 | 
			
		||||
oidc:
 | 
			
		||||
  only_start_if_oidc_is_available: true
 | 
			
		||||
  scope:
 | 
			
		||||
    - openid
 | 
			
		||||
    - profile
 | 
			
		||||
 | 
			
		||||
@ -34,6 +34,7 @@ logtail:
 | 
			
		||||
  enabled: false
 | 
			
		||||
metrics_listen_addr: 127.0.0.1:19090
 | 
			
		||||
oidc:
 | 
			
		||||
  only_start_if_oidc_is_available: true
 | 
			
		||||
  scope:
 | 
			
		||||
    - openid
 | 
			
		||||
    - profile
 | 
			
		||||
 | 
			
		||||
@ -35,6 +35,7 @@ logtail:
 | 
			
		||||
  enabled: false
 | 
			
		||||
metrics_listen_addr: 127.0.0.1:9090
 | 
			
		||||
oidc:
 | 
			
		||||
  only_start_if_oidc_is_available: true
 | 
			
		||||
  scope:
 | 
			
		||||
    - openid
 | 
			
		||||
    - profile
 | 
			
		||||
 | 
			
		||||
@ -483,7 +483,7 @@ func (h *Headscale) handleNewMachineCommon(
 | 
			
		||||
		Bool("noise", machineKey.IsZero()).
 | 
			
		||||
		Str("machine", registerRequest.Hostinfo.Hostname).
 | 
			
		||||
		Msg("The node seems to be new, sending auth url")
 | 
			
		||||
	if h.cfg.OIDC.Issuer != "" {
 | 
			
		||||
	if h.oauth2Config != nil {
 | 
			
		||||
		resp.AuthURL = fmt.Sprintf(
 | 
			
		||||
			"%s/oidc/register/%s",
 | 
			
		||||
			strings.TrimSuffix(h.cfg.ServerURL, "/"),
 | 
			
		||||
@ -716,7 +716,7 @@ func (h *Headscale) handleMachineExpiredCommon(
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if h.cfg.OIDC.Issuer != "" {
 | 
			
		||||
	if h.oauth2Config != nil {
 | 
			
		||||
		resp.AuthURL = fmt.Sprintf("%s/oidc/register/%s",
 | 
			
		||||
			strings.TrimSuffix(h.cfg.ServerURL, "/"),
 | 
			
		||||
			NodePublicKeyStripPrefix(registerRequest.NodeKey))
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user