-
Notifications
You must be signed in to change notification settings - Fork 120
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
LG-744 Whitelist SP attributes for ability to receive LOA3 data #2672
Conversation
What's the advantage of using the attribute bundle instead of the SP's |
6d5404e
to
320839e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like how this came out 💯
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This restricts one part of the process, but if the IAL level changes, do we restrict the identity.scopes
properly? I'm thinking in particular of what we do in OpenidConnectUserInfoPresenter
. It looks like we assume identity.scopes
is proper, which might not be completely true if we've changed the IAL level for an SP to be more restrictive.
What's the latest state here? |
fdc3bae
to
543f8c0
Compare
@jgsmith-usds I tested the scopes requesting ssn for IAL1, etc. and it correctly returned only IAL1 fields (email). wrt changing an SP's IAL level from IAL2 to IAL1 and the persisted scopes in identities: I say we create a new story for that scenario and fix it if it does not work properly. |
…to receive LOA3 data **Why**: Service providers should only receive fields that they have declared when the SP was setup in the service_providers.yml. This will prevent sending LOA3 data to an LOA1 only sp. **How**: Update the presenter which tells the user what fields are being returned and the attribute asserter which assembles the fields to be returned. Send only the intersection of fields requested with the fields declared for the SP in the service_providers.yml.
4b921cb
to
1a8e53f
Compare
This is a dependency for 18F/identity-idp#2672 The IDP will soon start enforcing validation such that IAL1 service providers can only request IAL1 attributes, not sensitive attributes. By default the IDP will consider service providers to be at IAL1. So in order to avoid any service providers that are relying upon IAL2/LOA3 data, we have to add a corresponding attribute to service providers in the dashboard.
* Add IAL attribute to service providers. This is a dependency for 18F/identity-idp#2672 The IDP will soon start enforcing validation such that IAL1 service providers can only request IAL1 attributes, not sensitive attributes. By default the IDP will consider service providers to be at IAL1. So in order to avoid any service providers that are relying upon IAL2/LOA3 data, we have to add a corresponding attribute to service providers in the dashboard.
* LG-744 Service Provider attributes should be whitelisted for ability to receive LOA3 data **Why**: Service providers should only receive fields that they have declared when the SP was setup in the service_providers.yml. This will prevent sending LOA3 data to an LOA1 only sp. **How**: Update the presenter which tells the user what fields are being returned and the attribute asserter which assembles the fields to be returned. Send only the intersection of fields requested with the fields declared for the SP in the service_providers.yml.
Why: Service providers should only receive loa3 data if they have been pre-configured to do so.
How: Only allow SAML and OIDC requests to accept loa3 requests if the sp is configured for ial 2. Update the existing configurations for loa3 sps in service_providers.yml. Add logic to SamlRequestValidator and OpenIdConnectAuthorizeForm.
Hi! Before submitting your PR for review, and/or before merging it, please
go through the checklists below. These represent the more critical elements
of our code quality guidelines. The rest of the list can be found in
CONTRIBUTING.md
Controllers
authenticated, make sure to add
before_action :confirm_two_factor_authenticated
as the first callback.
Database
Unsafe migrations are implemented over several PRs and over several
deploys to avoid production errors. The strong_migrations gem
will warn you about unsafe migrations and has great step-by-step instructions
for various scenarios.
Indexes were added if necessary. This article provides a good overview
of indexes in Rails.
Verified that the changes don't affect other apps (such as the dashboard)
When relevant, a rake task is created to populate the necessary DB columns
in the various environments right before deploying, taking into account the users
who might not have interacted with this column yet (such as users who have not
set a password yet)
Migrations against existing tables have been tested against a copy of the
production database. See LG-228 Make migrations safer and more resilient #2127 for an example when a migration caused deployment
issues. In that case, all the migration did was add a new column and an index to
the Users table, which might seem innocuous.
Encryption
Routes
state or result in destructive behavior).
Session
user_session
helperinstead of the
session
helper so the data does not persist beyond the user'ssession.
Testing
and invalid inputs.