-
Notifications
You must be signed in to change notification settings - Fork 3
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
fix: Fix XACML attribute id for system users #1340
Conversation
📝 WalkthroughWalkthroughThe pull request modifies the Changes
Possibly related PRs
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
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.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (2)
src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/DecisionRequestHelper.cs (1)
Line range hint
89-90
: Add tests for system user authorization scenarios.The system user ID extraction and attribute mapping looks correct. However, given this security-critical change, we should ensure comprehensive test coverage for system user authorization scenarios.
Would you like me to help generate additional test cases for:
- System user authorization with valid UUID
- System user authorization with invalid UUID
- Missing system user claims
tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs (1)
Line range hint
136-157
: Consider enhancing test coverage for system user scenarios.While the test covers the happy path, consider adding test cases for:
- Invalid/malformed authorization details JSON
- Empty or missing system user ID
Would you like me to help generate these additional test cases?
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (2)
- src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/DecisionRequestHelper.cs (1 hunks)
- tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs (1 hunks)
🧰 Additional context used
🔇 Additional comments (2)
src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/DecisionRequestHelper.cs (2)
22-22
: LGTM! Verify URN format with Altinn documentation.The change to include
:uuid
in the URN makes the expected identifier type explicit. This looks correct, but please verify that this URN format matches Altinn's documentation or specifications for system user identifiers.Let's check if this URN format is documented:
22-22
: Verify PDP configuration for the new URN format.This change to the system user attribute ID requires coordination with the PDP configuration:
- Ensure the PDP is configured to accept the new
urn:altinn:systemuser:uuid
format- Consider if this is a breaking change requiring coordinated deployment
- Verify if any existing XACML policies need updates
Let's check for any policy files that might need updates:
Also applies to: 89-90
✅ Verification successful
Let me try a different approach to verify this change by searching for any XML files first and then checking their content.
Let me check the test file and related code to understand how this URN is being used and tested.
Based on the test implementation and related code, I can now provide a final response:
The URN format change is already properly integrated and tested
The change to
urn:altinn:systemuser:uuid
is consistent with the existing implementation:
- The test file
DecisionRequestHelperTests.cs
explicitly verifies the new URN format in theCreateDialogDetailsRequestShouldReturnCorrectRequestForSystemUser
test- The
SystemUserIdentifier.cs
class uses the same URN prefix pattern- The
ClaimsPrincipalExtensions.cs
handles system user authentication using the same attribute IDThis appears to be a coordinated change that is already properly tested and integrated with the PDP configuration. No additional verification is needed.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for XACML policy files that might reference the old URN rg -l "urn:altinn:systemuser" --type xmlLength of output: 189
Script:
#!/bin/bash # First, find all XML files in the repository echo "=== Finding XML files ===" fd -e xml # Then search for any files containing authorization/policy related content echo -e "\n=== Searching for authorization related content ===" rg -l "(?i)(xacml|policy|authorization)" --type xml # Also search for any references to the system user attribute in all files echo -e "\n=== Searching for system user references ===" rg -l "systemuser" -g "!*.{dll,exe,pdb}"Length of output: 881
Script:
#!/bin/bash # Check the test implementation echo "=== Test Implementation ===" cat "tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs" # Check the system user identifier implementation echo -e "\n=== SystemUserIdentifier Implementation ===" cat "src/Digdir.Domain.Dialogporten.Domain/Parties/SystemUserIdentifier.cs" # Check claims principal extensions echo -e "\n=== ClaimsPrincipalExtensions Implementation ===" cat "src/Digdir.Domain.Dialogporten.Application/Common/Extensions/ClaimsPrincipalExtensions.cs"Length of output: 28449
tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs
Show resolved
Hide resolved
Quality Gate passedIssues Measures |
🤖 I have created a release *beep* *boop* --- ## [1.26.3](v1.26.2...v1.26.3) (2024-10-23) ### Bug Fixes * Fix XACML attribute id for system users ([#1340](#1340)) ([4257729](4257729)) * **service:** enable health-check for servicebus ([#1338](#1338)) ([480f5e3](480f5e3)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
## Description This simplifies the subject attribute mapping to only use a single attribute, as multiple subject attributes are explicitly disallowed by the PDP (eg. for system users). In fact, for external use, only a single subject attribute is ever required (eg. sending the authlvl attribute is not supported, as it is the PEPs responsibility to enforce any obligations returned from the PDP). In addition, support for allowing pure Maskinporten tokens (using only consumer-claims) has been removed, as this is not officially supported in the Altinn Authorization model; only userid/pid/systemuserid will cause the PDP to resolve roles/access packages in order to match policy rules, so the only way sending organization numbers as subject claims is if the policy itself contains hard coded organization numbers, which is discouraged (should access lists for that). Note that urn:altinn:org (ie serviceowner acronym claim types) are left out, as authenticated service owners should not use the end user APIs (this would potentially leak information that we only want to make available to the end users). ## Related Issue(s) See previous PR (#1340) and [slack thread](https://digdir.slack.com/archives/C079ZFUSFMW/p1729772275391209). ## Verification - [x] **Your** code builds clean without any errors or warnings - [x] Manual testing done (required) - [x] Relevant automated test added (if you find this hard, leave it and we'll help out) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Enhanced error handling with the introduction of an `UnreachableException` for invalid user types. - Streamlined attribute selection logic for improved performance. - **Bug Fixes** - Updated claims structure in tests to reflect recent changes, ensuring accurate validation. - **Tests** - Added a new test for exception handling. - Renamed and consolidated existing tests for clarity and maintainability. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Description
This fixes the XACML attribute id used when construction PDP requests
Related Issue(s)
Verification
Summary by CodeRabbit
New Features
Bug Fixes