mirror of https://github.com/grafana/grafana.git
Merge pull request #12029 from Nick-Triller/11893_oauth_auto_login
11893 oauth auto login
This commit is contained in:
commit
03ac9c5256
|
|
@ -73,7 +73,18 @@ You can hide the Grafana login form using the below configuration settings.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
[auth]
|
[auth]
|
||||||
disable_login_form ⁼ true
|
disable_login_form = true
|
||||||
|
```
|
||||||
|
|
||||||
|
### Automatic OAuth login
|
||||||
|
|
||||||
|
Set to true to attempt login with OAuth automatically, skipping the login screen.
|
||||||
|
This setting is ignored if multiple OAuth providers are configured.
|
||||||
|
Defaults to `false`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[auth]
|
||||||
|
oauth_auto_login = true
|
||||||
```
|
```
|
||||||
|
|
||||||
### Hide sign-out menu
|
### Hide sign-out menu
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,10 @@ func (hs *HTTPServer) LoginView(c *m.ReqContext) {
|
||||||
viewData.Settings["loginError"] = loginError
|
viewData.Settings["loginError"] = loginError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if tryOAuthAutoLogin(c) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if !tryLoginUsingRememberCookie(c) {
|
if !tryLoginUsingRememberCookie(c) {
|
||||||
c.HTML(200, ViewIndex, viewData)
|
c.HTML(200, ViewIndex, viewData)
|
||||||
return
|
return
|
||||||
|
|
@ -53,6 +57,24 @@ func (hs *HTTPServer) LoginView(c *m.ReqContext) {
|
||||||
c.Redirect(setting.AppSubUrl + "/")
|
c.Redirect(setting.AppSubUrl + "/")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func tryOAuthAutoLogin(c *m.ReqContext) bool {
|
||||||
|
if !setting.OAuthAutoLogin {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
oauthInfos := setting.OAuthService.OAuthInfos
|
||||||
|
if len(oauthInfos) != 1 {
|
||||||
|
log.Warn("Skipping OAuth auto login because multiple OAuth providers are configured.")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for key := range setting.OAuthService.OAuthInfos {
|
||||||
|
redirectUrl := setting.AppSubUrl + "/login/" + key
|
||||||
|
log.Info("OAuth auto login enabled. Redirecting to " + redirectUrl)
|
||||||
|
c.Redirect(redirectUrl, 307)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func tryLoginUsingRememberCookie(c *m.ReqContext) bool {
|
func tryLoginUsingRememberCookie(c *m.ReqContext) bool {
|
||||||
// Check auto-login.
|
// Check auto-login.
|
||||||
uname := c.GetCookie(setting.CookieUserName)
|
uname := c.GetCookie(setting.CookieUserName)
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,7 @@ var (
|
||||||
ExternalUserMngLinkUrl string
|
ExternalUserMngLinkUrl string
|
||||||
ExternalUserMngLinkName string
|
ExternalUserMngLinkName string
|
||||||
ExternalUserMngInfo string
|
ExternalUserMngInfo string
|
||||||
|
OAuthAutoLogin bool
|
||||||
ViewersCanEdit bool
|
ViewersCanEdit bool
|
||||||
|
|
||||||
// Http auth
|
// Http auth
|
||||||
|
|
@ -626,6 +627,7 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
|
||||||
auth := iniFile.Section("auth")
|
auth := iniFile.Section("auth")
|
||||||
DisableLoginForm = auth.Key("disable_login_form").MustBool(false)
|
DisableLoginForm = auth.Key("disable_login_form").MustBool(false)
|
||||||
DisableSignoutMenu = auth.Key("disable_signout_menu").MustBool(false)
|
DisableSignoutMenu = auth.Key("disable_signout_menu").MustBool(false)
|
||||||
|
OAuthAutoLogin = auth.Key("oauth_auto_login").MustBool(false)
|
||||||
SignoutRedirectUrl = auth.Key("signout_redirect_url").String()
|
SignoutRedirectUrl = auth.Key("signout_redirect_url").String()
|
||||||
|
|
||||||
// anonymous access
|
// anonymous access
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue