Source File
settings.go
Belonging Package
github.com/jcmturner/gokrb5/v8/service
package serviceimport ()// Settings defines service side configuration settings.type Settings struct {Keytab *keytab.Keytabktprinc *types.PrincipalNamesname stringrequireHostAddr booldisablePACDecoding boolcAddr types.HostAddressmaxClockSkew time.Durationlogger *log.LoggersessionMgr SessionMgr}// NewSettings creates a new service Settings.func ( *keytab.Keytab, ...func(*Settings)) *Settings {:= new(Settings).Keytab =for , := range {()}return}// RequireHostAddr used to configure service side to required host addresses to be specified in Kerberos tickets.//// s := NewSettings(kt, RequireHostAddr(true))func ( bool) func(*Settings) {return func( *Settings) {.requireHostAddr =}}// RequireHostAddr indicates if the service should require the host address to be included in the ticket.func ( *Settings) () bool {return .requireHostAddr}// DecodePAC used to configure service side to enable/disable PAC decoding if the PAC is present.// Defaults to enabled if not specified.//// s := NewSettings(kt, DecodePAC(false))func ( bool) func(*Settings) {return func( *Settings) {.disablePACDecoding = !}}// DecodePAC indicates whether the service should decode any PAC information present in the ticket.func ( *Settings) () bool {return !.disablePACDecoding}// ClientAddress used to configure service side with the clients host address to be used during validation.//// s := NewSettings(kt, ClientAddress(h))func ( types.HostAddress) func(*Settings) {return func( *Settings) {.cAddr =}}// ClientAddress returns the client host address which has been provided to the service.func ( *Settings) () types.HostAddress {return .cAddr}// Logger used to configure service side with a logger.//// s := NewSettings(kt, Logger(l))func ( *log.Logger) func(*Settings) {return func( *Settings) {.logger =}}// Logger returns the logger instances configured for the service. If none is configured nill will be returned.func ( *Settings) () *log.Logger {return .logger}// KeytabPrincipal used to override the principal name used to find the key in the keytab.//// s := NewSettings(kt, KeytabPrincipal("someaccount"))func ( string) func(*Settings) {return func( *Settings) {, := types.ParseSPNString().ktprinc = &}}// KeytabPrincipal returns the principal name used to find the key in the keytab if it has been overridden.func ( *Settings) () *types.PrincipalName {return .ktprinc}// MaxClockSkew used to configure service side with the maximum acceptable clock skew// between the service and the issue time of kerberos tickets//// s := NewSettings(kt, MaxClockSkew(d))func ( time.Duration) func(*Settings) {return func( *Settings) {.maxClockSkew =}}// MaxClockSkew returns the maximum acceptable clock skew between the service and the issue time of kerberos tickets.// If none is defined a duration of 5 minutes is returned.func ( *Settings) () time.Duration {if .maxClockSkew.Nanoseconds() == 0 {return time.Duration(5) * time.Minute}return .maxClockSkew}// SName used provide a specific service name to the service settings.//// s := NewSettings(kt, SName("HTTP/some.service.com"))func ( string) func(*Settings) {return func( *Settings) {.sname =}}// SName returns the specific service name to the service.func ( *Settings) () string {return .sname}// SessionManager configures a session manager to establish sessions with clients to avoid excessive authentication challenges.//// s := NewSettings(kt, SessionManager(sm))func ( SessionMgr) func(*Settings) {return func( *Settings) {.sessionMgr =}}// SessionManager returns any configured session manager.func ( *Settings) () SessionMgr {return .sessionMgr}// SessionMgr must provide a ways to://// - Create new sessions and in the process add a value to the session under the key provided.//// - Get an existing session returning the value in the session under the key provided.// Return nil bytes and/or error if there is no session.type SessionMgr interface {New(w http.ResponseWriter, r *http.Request, k string, v []byte) errorGet(r *http.Request, k string) ([]byte, error)}
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |