code: func BuildAuth(nodeName types.NodeName, client clientset.Interface, config kubeletconfig.KubeletConfiguration) (server.AuthInterface, error) {
  	// Get clients, if provided
  	var (
  		tokenClient authenticationclient.TokenReviewInterface
  		sarClient   authorizationclient.SubjectAccessReviewInterface
  	)
  	if client != nil && !reflect.ValueOf(client).IsNil() {
  		tokenClient = client.AuthenticationV1beta1().TokenReviews()
  		sarClient = client.AuthorizationV1beta1().SubjectAccessReviews()
  	}
  
  	authenticator, err := BuildAuthn(tokenClient, config.Authentication)
  	if err != nil {
  		return nil, err
  	}
  
  	attributes := server.NewNodeAuthorizerAttributesGetter(nodeName)
  
  	authorizer, err := BuildAuthz(sarClient, config.Authorization)
  	if err != nil {
  		return nil, err
  	}
  
  	return server.NewKubeletAuth(authenticator, attributes, authorizer), nil
  }
docs: // BuildAuth creates an authenticator, an authorizer, and a matching authorizer attributes getter compatible with the kubelet's needs