Skip to content

Commit

Permalink
update azure instructions (#6858)
Browse files Browse the repository at this point in the history
Update instructions in regards to azure AD Authentication and OIDC
  • Loading branch information
annerajb authored and Jim Kalafut committed Jun 21, 2019
1 parent ba86d39 commit a8d7670
Showing 1 changed file with 40 additions and 3 deletions.
43 changes: 40 additions & 3 deletions website/source/docs/auth/jwt_oidc_providers.html.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ description: |-
# OIDC Provider Configuration

This page collects high-level setup steps on how to configure an OIDC application for various
providers. These providers are often highly configurable and you should become familiar with their
providers. For more general usage and operation information, see the
[Vault JWT/OIDC method documentation](https://www.vaultproject.io/docs/auth/jwt.html).

OIDC providers are often highly configurable and you should become familiar with their
recommended settings and best practices. The instructions below are intended only to help you get
started. Corrections and additions may be submitted via the [Vault Github repository](https://github.com/hashicorp/vault).

Expand All @@ -17,12 +20,44 @@ Reference: [Azure Active Directory v2.0 and the OpenID Connect protocol](https:/

1. Register or select an AAD application. Visit Overview page.
1. Configure Redirect URIs ("Web" type).
1. Record "Application (client) ID".
* you must include two redirect URIs here one for CLI access another one for web access
* http://localhost:8250/oidc/callback
* https://hostname:port_number/ui/vault/auth/oidc/oidc/callback
1. Record "Application (client) ID" you will need it as the oidc_client_id
1. Under API Permissions grant the following permission:
* Microsoft Graph API permission [Group.Read.All](https://docs.microsoft.com/en-us/graph/permissions-reference#application-permissions-10)
1. Under "Endpoints", copy the OpenID Connect metadata document URL, omitting the `/well-known...` portion.
* endpoint url (oidc_discovery_url) should look as: https://login.microsoftonline.com/tenant-guid-dead-beef-aaaa-aaaa/v2.0
1. Switch to Certificates & Secrets. Create a new client secret and record the generated value as
it will not be accessible after you leave the page.

Please note [Azure AD v2.0 endpoints](https://docs.microsoft.com/en-gb/azure/active-directory/develop/azure-ad-endpoint-comparison) are required for [external groups](https://www.vaultproject.io/docs/secrets/identity/index.html#external-vs-internal-groups) to work. Further, the App Registration needs the [Group.Read.All](https://docs.microsoft.com/en-us/graph/permissions-reference#application-permissions-10) Microsoft Graph API Permission, and `groupMembershipClaims` should be changed from `none` in the [App registration manifest](https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-app-manifest). In the [OIDC Role config](https://www.vaultproject.io/api/auth/jwt/index.html#create-role) the scope `"https://graph.microsoft.com/.default"` should be added to add groups to the jwt token and `groups_claim` should be set to `groups`. Finally Azure AD group can be referenced by using the groups `objectId` as the [group alias name](https://www.vaultproject.io/api/secret/identity/group-alias.html) for the external group.
Please note [Azure AD v2.0 endpoints](https://docs.microsoft.com/en-gb/azure/active-directory/develop/azure-ad-endpoint-comparison) are required for [external groups](https://www.vaultproject.io/docs/secrets/identity/index.html#external-vs-internal-groups) to work.
* `groupMembershipClaims` should be changed from `none` in the [App registration manifest](https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-app-manifest). Options are "All" or "Security"

* In the [OIDC Role config](https://www.vaultproject.io/api/auth/jwt/index.html#create-role) the scope `"https://graph.microsoft.com/.default"` should be added to add groups to the jwt token and `groups_claim` should be set to `groups`.

* Finally Azure AD group can be referenced by using the groups `objectId` as the [group alias name](https://www.vaultproject.io/api/secret/identity/group-alias.html) for the external group.
### CLI setup instructions:
You have to fill in the following values make sure to use the correct vault secret patch that matches the name of the authentication method such as /oidc/
* oidc_client_id = Application Client ID
* oidc_client_secret = Secret obtained from the Certificates & Secrets Section
* default_role = default role the user will be using when connecting. (see the second command)
* oidc_discovery_url = Open ID endpoint retrieved from the App Registration wections.
```
vault write auth/oidc/config \
oidc_client_id="your_client_id" \
oidc_client_secret="your_client_secret" \
default_role=“your_default_role” \
oidc_discovery_url="https://login.microsoftonline.com/tenant_id/v2.0”
```

```
vault write auth/oidc/role/demo user_claim="email" \
allowed_redirect_uris="http://localhost:8250/oidc/callback,https://online_version_hostname:port_number/ui/vault/auth/oidc/oidc/callback" \
groups_claim="groups" \
policies=default
```

## Auth0
1. Select Create Application (Regular Web App).
Expand Down Expand Up @@ -62,3 +97,5 @@ Main reference: [Using OAuth 2.0 to Access Google APIs](https://developers.googl
1. Visit Applications > Add Application (Web).
1. Configure Login redirect URIs. Save.
1. Save client ID and secret.

Note your policy will need `oidc_scopes` to include `profile` to get a full profile ("[Fat Token](https://support.okta.com/help/s/article/Okta-Groups-or-Attribute-Missing-from-Id-Token)"). You will also need to configure bound audience along the lines of `"bound_audiences": ["api://default", "0a4........."]` if you are using the default authorization server.

0 comments on commit a8d7670

Please sign in to comment.