Current section

113 Versions

Jump to

Compare versions

12 files changed
+199 additions
-35 deletions
  @@ -1,6 +1,6 @@
1 1 PROJECT = brod
2 2 PROJECT_DESCRIPTION = Kafka client library in Erlang
3 - PROJECT_VERSION = 2.4.1
3 + PROJECT_VERSION = 2.5.0
4 4
5 5 DEPS = supervisor3 kafka_protocol
6 6 TEST_DEPS = docopt jsone meck proper
  @@ -337,6 +337,28 @@ start(ClientId) ->
337 337 _CallbackInitArg = []).
338 338 ```
339 339
340 + # Authentication support
341 +
342 + brod supports SASL PLAIN authentication mechanism out of the box. To use it
343 + add `{sasl, {plain, Username, Password}}` to client config. Also, brod has authentication
344 + plugins support. Authentication callback module should implement `brod_auth_backend` behaviour.
345 + Auth function spec:
346 +
347 + ```erlang
348 + auth(Host :: string(), Sock :: gen_tcp:socket() | ssl:sslsocket(),
349 + Mod :: gen_tcp | ssl, ClientId :: binary(),
350 + Timeout :: pos_integer(), SaslOpts :: term()) ->
351 + ok | {error, Reason :: term()}
352 + ```
353 +
354 + If authentication is successful - callback function should return an atom `ok`, otherwise - error tuple with reason description.
355 + For example, you can use `brod_gssapi' plugin (https://github.com/ElMaxo/brod_gssapi) for SASL GSSAPI authentication.
356 + To use it - add it as dependency to your top level project that uses brod.
357 + Then add `{sasl, {callback, brod_gssapi, {gssapi, Keytab, Principal}}}` to client config.
358 + Keytab should be the keytab file path, and Principal should be a byte-list or binary string.
359 +
360 + See also: https://github.com/klarna/brod/wiki/SASL-gssapi-(kerberos)-authentication
361 +
340 362 # Other API to play with/inspect kafka
341 363
342 364 These functions open a connetion to kafka cluster, send a request,
  @@ -352,7 +374,8 @@ brod:get_offsets(Hosts, Topic, Partition).
352 374 brod:fetch(Hosts, Topic, Partition, 1).
353 375 ```
354 376
355 - # Self-contained binary (needs erlang runtime)
377 + # brod-cli: A command line tool to interact with Kafka
378 +
356 379 This will build a self-contained binary with brod application
357 380
358 381 ```bash
  @@ -1,5 +1,5 @@
1 1 {<<"name">>,<<"brod">>}.
2 - {<<"version">>,<<"2.4.1">>}.
2 + {<<"version">>,<<"2.5.0">>}.
3 3 {<<"requirements">>,
4 4 #{<<"kafka_protocol">> => #{<<"app">> => <<"kafka_protocol">>,
5 5 <<"optional">> => false,
  @@ -24,7 +24,8 @@
24 24 <<"scripts/cover-print-not-covered-lines.escript">>,
25 25 <<"scripts/cover-summary.escript">>,<<"scripts/generate-certificates.sh">>,
26 26 <<"scripts/line-width-check.sh">>,<<"scripts/setup-test-env.sh">>,
27 - <<"scripts/vsn-check.sh">>,<<"src/brod.erl">>,<<"src/brod_cli.erl">>,
27 + <<"scripts/vsn-check.sh">>,<<"src/brod.erl">>,
28 + <<"src/brod_auth_backend.erl">>,<<"src/brod_cli.erl">>,
28 29 <<"src/brod_cli_pipe.erl">>,<<"src/brod_client.erl">>,
29 30 <<"src/brod_consumer.erl">>,<<"src/brod_consumers_sup.erl">>,
30 31 <<"src/brod_group_coordinator.erl">>,<<"src/brod_group_member.erl">>,
unknownscripts/brod
File is too large to be displayed (100 KB limit).
  @@ -1,6 +1,6 @@
1 1 {application,brod,
2 2 [{description,"Apache Kafka Erlang client library"},
3 - {vsn,"2.4.1"},
3 + {vsn,"2.5.0"},
4 4 {registered,[]},
5 5 {applications,[kernel,stdlib,ssl,kafka_protocol,supervisor3]},
6 6 {env,[]},
Loading more files…