Giter Club home page Giter Club logo

nats.mapper's Introduction

NATS.Mapper

Solution for authenticating and mapping external credentials to NATS NKeys.

โญ I appreciate your star, it helps me decide to which OSS projects I should allocate my spare time.


Overview

The NATS Mapper is a service and client combination that allows you to resolve an identity using an external authentication service, and then map that identity to an NKey pair for subsequent authentication to a NATS server.

The NAT Mapper Server can be configured to map a number of identities under various identity systems to an NKeys pairs. The server will resolve the identity to return the NKeys JWT (public) component. Then it can be used to sign a challenge nonce (as issued by the NATS server) using the NKeys Seed (private) component.

Accordingly the NATS Mapper Client can be used to resolve the identity of the calling client using an external Identity System and then authenticate itself to the NATS Mapper Server to resolve a mapped JWT and subsequently, a signed challenge nonce. The NATS Mapper Client can be used to integrate with the official NATS .NET Client in order to support the cross-system interaction transparently.

.NET Core Implementation

The current implementation of client and server are in .NET Core. While this means that only .NET clients are currently supported, additional platforms and languages that are supported by NATS can be added in the future, as the native protocol between the client and server is gRPC and can be easily adapted to any platform that has gRPC bindings.

Supported External Identity Systems

Currently the following External Identity Systems are supported.

Kerberos

Kerberos-based authentication is used to resolve the identity running the client. The fully qualified Kerberos name of the user is then mapped to an NKeys pair, such as [email protected].

Currently, the user credentials must be provided explicitly to the client, but a future enhancement is planned to resolve the credentials from the running context such as from a keytab file.

AWS IAM

AWS IAM credentials can be used to resolve the identity of the running client. The credentials can be provided explicitly or can be resolved from the running context using a pre-defined set of fallback locations as defined by the AWS SDK.

The resolved IAM arn can then be used to map to an NKeys pair, such as arn:aws:iam::123456789012:user/john_doe.

Additionally, you can specify a wild-card pattern to map a group of identities to a single NKeys pair. For example arn:aws:iam::123456789012:* would map all identities (users, roles, EC2 instances, Lambdas, etc.) under a single root account to a single NKeys pair. Or arn:aws:iam::123456789012:user/* would map all user identities.


TODO: more details and samples


Implementation Details

Kerberos Implementation

nats.mapper's People

Contributors

ebekker avatar

Stargazers

 avatar  avatar Louis Marascio avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.