-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Description
Summary
Event Hubs allows for authorization using a shared key and shared access signature that is supported using a service-specific shared access key credential. It is common for the shared key or shared access signature to be passed with the service endpoint and entity path as part of a connection string. To align with best practices, we would like to guide library users to down the path of using credentials for authorization within production applications. In order to assist with transforming a connection string for use with credential-based client creation, a parsing utility is desirable.
Scope of Work
-
Design and implementation of a means for parsing a Event Hubs connection string into its components. These should include:
- FullyQualifiedNamespace
- Endpoint
- EventHubName
- SharedAccessSignature
- SharedAccessKeyName
- SharedAccessKey
-
The parser should adhere to the current validation rules for connection string correctness. For example:
- Only one form of authorization should be allowed (shared key or shared access signature)
- The
Endpointmust be present - The
EntityPathis optional - All tokens which are present must have an associated value
-
The
EventHubNamereflects theEntityPathtoken of the connection string, if present. -
The host name of the
Endpointshould be reflected as theFullyQualifiedNamespace. -
Unknown tokens in the connection string are rejected or ignored; they are not reflected in the set of parsed tokens.
-
The parsed values should be treated as read-only, if idiomatic to the language.
-
The proposed surface area of the parser, as well as any associated types that change the public API surface should be reviewed with the language architect, and approval obtained. Full board review is not necessary.
Success Criteria
-
The design of a parser detailed by the scope has been completed and approved by the language architect.
-
The parser has been implemented according to the design and is exposed as part of the public API of the library.
-
The tests necessary for its validation have been created or adjusted and pass reliably.
-
The existing test suite continues to produce deterministic results and pass reliably.