Skip to content

Commit

Permalink
Re-purpose Organization in pre-issue access token Request.
Browse files Browse the repository at this point in the history
  • Loading branch information
Thisara-Welmilla committed Mar 10, 2025
1 parent 07d921a commit d33565e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@
import org.wso2.carbon.identity.openidconnect.CustomClaimsCallbackHandler;
import org.wso2.carbon.identity.openidconnect.OIDCClaimUtil;
import org.wso2.carbon.identity.openidconnect.util.ClaimHandlerUtil;
import org.wso2.carbon.identity.organization.management.service.OrganizationManager;
import org.wso2.carbon.identity.organization.management.service.exception.OrganizationManagementException;
import org.wso2.carbon.identity.organization.management.service.util.OrganizationManagementUtil;

import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -74,6 +76,8 @@ public class PreIssueAccessTokenRequestBuilder implements ActionExecutionRequest
public static final String CLAIMS_PATH_PREFIX = "/accessToken/claims/";
public static final String SCOPES_PATH_PREFIX = "/accessToken/scopes/";
private static final Log LOG = LogFactory.getLog(PreIssueAccessTokenRequestBuilder.class);
private static final OrganizationManager organizationManager = OAuthComponentServiceHolder.getInstance()
.getOrganizationManager();

@Override
public ActionType getSupportedActionType() {
Expand Down Expand Up @@ -112,7 +116,7 @@ private Event getEvent(OAuthTokenReqMessageContext tokenMessageContext, Map<Stri
boolean isAuthorizedForUser = isAccessTokenAuthorizedForUser(tokenReqDTO.getGrantType(), tokenMessageContext);
if (isAuthorizedForUser) {
setUserForEventBuilder(eventBuilder, authorizedUser, tokenReqDTO.getClientId(), tokenReqDTO.getGrantType());
setOrganizationForEventBuilder(eventBuilder, authorizedUser, tokenReqDTO.getClientId(),
setOrganizationForEventBuilder(eventBuilder, tokenMessageContext, tokenReqDTO.getClientId(),
tokenReqDTO.getGrantType());
eventBuilder.userStore(new UserStore(authorizedUser.getUserStoreDomain()));
}
Expand All @@ -139,17 +143,27 @@ private void setUserForEventBuilder(PreIssueAccessTokenEvent.Builder eventBuilde
}
}

private void setOrganizationForEventBuilder(PreIssueAccessTokenEvent.Builder eventBuilder, AuthenticatedUser user,
private void setOrganizationForEventBuilder(PreIssueAccessTokenEvent.Builder eventBuilder,
OAuthTokenReqMessageContext tokenMessageContext,
String clientID, String grantType) {

String tenantDomain = tokenMessageContext.getOauth2AccessTokenReqDTO().getTenantDomain();

try {
String organizationId = user.getUserResidentOrganization();
if (organizationId != null && !organizationId.isEmpty()) {
String organizationName = OAuthComponentServiceHolder.getInstance().getOrganizationManager()
.getOrganizationNameById(user.getUserResidentOrganization());
eventBuilder.organization(new Organization(user.getUserResidentOrganization(),
organizationName));
/* Only if the user is attempting to log in to a sub-organization, the organization will be set,
and also the root tenant will be considered the tenant domain. */
if (OrganizationManagementUtil.isOrganization(tenantDomain)) {
String orgId = organizationManager.resolveOrganizationId(tenantDomain);
eventBuilder.organization(new Organization(
orgId,
organizationManager.getOrganizationNameById(orgId)
));
tenantDomain = OrganizationManagementUtil.getRootOrgTenantDomainBySubOrgTenantDomain(orgId);
}
eventBuilder.tenant(new Tenant(
String.valueOf(IdentityTenantUtil.getTenantId(tenantDomain)),
tenantDomain
));
} catch (OrganizationManagementException e) {
if (LOG.isDebugEnabled()) {
LOG.debug(String.format(
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -977,7 +977,7 @@
<carbon.identity.organization.management.version.range>[1.1.14, 2.0.0)
</carbon.identity.organization.management.version.range>

<carbon.identity.organization.management.core.version>1.1.20
<carbon.identity.organization.management.core.version>1.1.24
</carbon.identity.organization.management.core.version>
<carbon.identity.organization.management.core.version.range>[1.0.0, 2.0.0)
</carbon.identity.organization.management.core.version.range>
Expand Down

0 comments on commit d33565e

Please sign in to comment.