sendAndReceiveSASLOAuth performs the authentication flow as described by KIP-255 https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=75968876
(authSendReceiver func(authBytes []byte) (*SaslAuthenticateResponse, error), provider AccessTokenProvider)
| 1666 | // sendAndReceiveSASLOAuth performs the authentication flow as described by KIP-255 |
| 1667 | // https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=75968876 |
| 1668 | func (b *Broker) sendAndReceiveSASLOAuth(authSendReceiver func(authBytes []byte) (*SaslAuthenticateResponse, error), provider AccessTokenProvider) error { |
| 1669 | token, err := provider.Token() |
| 1670 | if err != nil { |
| 1671 | return err |
| 1672 | } |
| 1673 | |
| 1674 | message, err := buildClientFirstMessage(token) |
| 1675 | if err != nil { |
| 1676 | return err |
| 1677 | } |
| 1678 | |
| 1679 | res, err := authSendReceiver(message) |
| 1680 | if err != nil { |
| 1681 | return err |
| 1682 | } |
| 1683 | isChallenge := len(res.SaslAuthBytes) > 0 |
| 1684 | |
| 1685 | if isChallenge { |
| 1686 | // Abort the token exchange. The broker returns the failure code. |
| 1687 | _, err = authSendReceiver([]byte(`\x01`)) |
| 1688 | } |
| 1689 | return err |
| 1690 | } |
| 1691 | |
| 1692 | func (b *Broker) sendAndReceiveSASLSCRAMv0() error { |
| 1693 | if err := b.sendAndReceiveSASLHandshake(b.conf.Net.SASL.Mechanism, SASLHandshakeV0); err != nil { |
no test coverage detected