openconfig / reference

This repository contains reference implementations, specifications and tooling related to OpenConfig-based network management.
Apache License 2.0
155 stars 88 forks source link

gnmi: standardise metadata username/password keys #183

Open brianneville opened 1 year ago

brianneville commented 1 year ago

Currently, there is no standard for what keys should be used in the metadata to identify gNMI/gNOI username and password when doing authentication.

By convention, the username and password are provided in the metadata with keys "username" and "password". (see examples below). It would be good to formalise this into the gNMI authentication reference spec here so that gNMI clients and servers can both be designed with this consensus.

Some examples of current gNMI clients providing "username" and "password" as keys in metadata:

  1. gnmi_cli client: https://github.com/openconfig/gnmi/blob/d5360e33fc3b22effeaaaf55f345c1f950765bed/client/gnmi/credentials.go#L35

  2. goarista client: https://github.com/aristanetworks/goarista/blob/6112fea8c7e028c64ae52412952b0a2142b8c2e9/gnmi/client.go#L311

  3. gnmic client: https://github.com/karimra/gnmic/blob/d1b198f67a99fe2f228d6119569310ebb1a50be3/target/target.go#L140 Also note the other usages of metadata.AppendToOutgoingContext(ctx, "username", *t.Config.Username) and metadata.AppendToOutgoingContext(ctx, "password", *t.Config.Password)

  4. pygnmi client https://github.com/akarneliuk/pygnmi/blob/3090d23ae32658026a244390a296f6ade01e9fb3/pygnmi/client.py#L54