feat: support add additional params and test access by auth0

This commit is contained in:
blizard863 2022-02-21 20:22:01 +08:00
parent 10100c28d9
commit 9887532398
2 changed files with 23 additions and 4 deletions

View File

@ -51,6 +51,11 @@ oidc_audience =
# It will be used to get an OIDC token if AuthenticationMethod == "oidc". By default, this value is "".
oidc_token_endpoint_url =
# oidc_additional_endpoint_params specifies additional parameters to be sent to the OIDC Token Endpoint.
# It will be used to get an OIDC token if AuthenticationMethod == "oidc". By default, this value is "".
# If it's not empty, it should be a json string, like {"audience": ["https://dev.auth.com/api/v2/"]}
oidc_additional_endpoint_params = {"audience": ["https://dev.auth.com/api/v2/"], "scope": ["openid", "profile", "email"]}
# set admin address for control frpc's action by http api such as reload
admin_addr = 127.0.0.1
admin_port = 7400

View File

@ -16,6 +16,7 @@ package auth
import (
"context"
"encoding/json"
"fmt"
"github.com/fatedier/frp/pkg/msg"
@ -40,6 +41,10 @@ type OidcClientConfig struct {
// It will be used to get an OIDC token if AuthenticationMethod == "oidc".
// By default, this value is "".
OidcTokenEndpointURL string `ini:"oidc_token_endpoint_url" json:"oidc_token_endpoint_url"`
// OidcAdditionalEndpointParams specifies additional parameters to be sent
// this field will be Unmarshal to map[string][]string
OidcAdditionalEndpointParams string `ini:"oidc_additional_endpoint_params" json:"oidc_additional_endpoint_params"`
}
func getDefaultOidcClientConf() OidcClientConfig {
@ -88,11 +93,20 @@ type OidcAuthProvider struct {
}
func NewOidcAuthSetter(baseCfg BaseConfig, cfg OidcClientConfig) *OidcAuthProvider {
eps := make(map[string][]string)
if cfg.OidcAdditionalEndpointParams != "" {
err := json.Unmarshal([]byte(cfg.OidcAdditionalEndpointParams), &eps)
if err != nil {
panic(err)
}
}
tokenGenerator := &clientcredentials.Config{
ClientID: cfg.OidcClientID,
ClientSecret: cfg.OidcClientSecret,
Scopes: []string{cfg.OidcAudience},
TokenURL: cfg.OidcTokenEndpointURL,
EndpointParams: eps,
}
return &OidcAuthProvider{