Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[87] add login.gov certs and configuration #99

Merged
merged 3 commits into from
Aug 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env_login
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# local dev env vars for login.gov
export LOGIN_CLIENT_ID=urn:gov:gsa:openidconnect.profiles:sp:sso:gsa:challenge_gov_portal_eval_dev
export LOGIN_REDIRECT_EVAL_URL=http://localhost:3000/auth/result
export LOGOUT_REDIRECT_EVAL_URL=http://localhost:3000/
3 changes: 3 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ use nix

mkdir -p .nix-bundler
export BUNDLE_PATH=./.nix-bundler

# Login Env Vars
source .env_login
5 changes: 4 additions & 1 deletion DEVCONFIG.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ Once direnv is installed and your shell is restarted, clone the project and `cd`
1. Set up your uswds files in the build directory `npx gulp copyAssets`
1. Setup the database `rake db:create`, note that postgres must be running for this to work
1. Boot the system, this will run the sass, esbuild, and uswds watchers along with the rails server
1. `./bin/dev`
```
./bin/dev
```
> _NOTE for login.gov configuration_ -- if you are **not** using direnv/nix to eval `.envrc`, you can run `source .env_login` in your terminal before starting the server or add the env vars in that file to your local environment directly.

Now you can visit [`localhost:3000`](http://localhost:3000) from your browser.

12 changes: 12 additions & 0 deletions config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,17 @@ class Application < Rails::Application

# Use the Postgresql-specific syntax for DB dumps
config.active_record.schema_format = :sql

# Shared login.gov config with ENV overrides
config.login_gov_oidc = {
idp_host: ENV.fetch("LOGIN_IDP_HOST", "https://idp.int.identitysandbox.gov"),
login_redirect_uri: ENV.fetch("LOGIN_REDIRECT_EVAL_URL", "https://challenge-dev.app.cloud.gov/auth/result"),
logout_redirect_uri: ENV.fetch("LOGOUT_REDIRECT_EVAL_URL", "https://challenge-dev.app.cloud.gov/"),
Comment on lines +35 to +36
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when we have shared sessions, these can point to the same place for both platform and portal apps, but for now they each redirect to themselves since there are separate logins.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

acr_value: "http://idmanagement.gov/ns/assurance/loa/1",
client_id: ENV.fetch("LOGIN_CLIENT_ID", "urn:gov:gsa:openidconnect.profiles:sp:sso:gsa:_client_id"), # default fake ID for CI
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could have the env fail if these ENV are missing, but I went with defaults to make CircleCI/test environments happy without adding unnecessary env vars to them.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

private_key_password: ENV.fetch("LOGIN_PRIVATE_KEY_PASSWORD", nil), # optional
public_key_path: ENV.fetch("LOGIN_PUBLIC_KEY_PATH", "config/public.crt"),
private_key_path: ENV.fetch("LOGIN_PRIVATE_KEY_PATH", "config/private.pem"),
}
end
end
11 changes: 0 additions & 11 deletions config/environments/development.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,15 +75,4 @@

# Raise error when a before_action's only/except options reference missing actions
config.action_controller.raise_on_missing_callback_actions = true

config.login_gov_oidc = {
idp_host: "https://idp.int.identitysandbox.gov",
login_redirect_uri: "http://localhost:3000/auth/result",
logout_redirect_uri: "https://www.challenge.gov/",
acr_value: "http://idmanagement.gov/ns/assurance/loa/1",
client_id: "urn:gov:gsa:openidconnect.profiles:sp:sso:gsa:challenge_gov_platform_dev",
private_key_password: nil,
private_key_path: "config/private.pem",
public_key_path: "config/public.crt",
}
end
8 changes: 4 additions & 4 deletions manifest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ applications:
RAILS_LOG_TO_STDOUT: true
RAILS_SERVE_STATIC_FILES: true
HOST: challenge-dev.app.cloud.gov
LOGIN_CLIENT_ID: urn:gov:gsa:openidconnect.profiles:sp:sso:gsa:challenge_gov_portal_eval_dev
LOGIN_IDP_HOST: https://idp.int.identitysandbox.gov
LOGIN_PRIVATE_KEY_PATH: dev_key.pem
LOGIN_PUBLIC_KEY_PATH: dev_cert.pem
LOGIN_REDIRECT_URL: https://challenge-portal-dev.app.cloud.gov/auth/result
LOGIN_IDP_AUTHORIZE_URL: https://idp.int.identitysandbox.gov/openid_connect/authorize
LOGIN_TOKEN_ENDPOINT: https://idp.int.identitysandbox.gov/api/openid_connect/token
Comment on lines -26 to -27
Copy link
Contributor Author

@stepchud stepchud Aug 2, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this app calculates the authorize and token endpoints from LOGIN_IDP_HOST, which is the base URL. I assume these don't need to be separate hosts.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, I had just followed the patterns we'd used on the portal, this makes more sense.

LOGIN_CLIENT_ID: urn:gov:gsa:openidconnect.profiles:sp:sso:gsa:challenge_gov_portal_dev
LOGIN_REDIRECT_EVAL_URL: https://challenge-dev.app.cloud.gov/auth/result
LOGOUT_REDIRECT_EVAL_URL: https://challenge-dev.app.cloud.gov/
Loading