Hi all,

When listing all the claim dialects using the Claim Management REST API the
local claim dialect is also listed.

[
    {
        "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcw",
        "dialectURI": "http://wso2.org/claims";,
        "link": {
            "href": "
https://localhost:9443/t/carbon.super/api/server/v1/claim-dialects/aHR0cDovL3dzbzIub3JnL2NsYWltcw/claims
",
            "rel": "claims"
        }
    },
    {
        "id":
"aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eQ",
        "dialectURI": "http://schemas.xmlsoap.org/ws/2005/05/identity";,
        "link": {
            "href": "
https://localhost:9443/t/carbon.super/api/server/v1/claim-dialects/aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eQ/claims
",
            "rel": "claims"
        }
    },
...

Using the provided link in *href *it is possible to retrieve the set of
claims for each dialect except for the *href *for the local claim dialect.
A separate endpoint is defined in the swagger[1] for getting claims from
the local dialect as the schema returned is significantly different than
when calling using another claim dialect.

Response when using the local claim dialect when getting claims;
[
    {
        "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9sb2NhbA",
        "claimURI": "http://wso2.org/claims/local";,
        "dialectURI": "http://wso2.org/claims";,
        "description": "Local",
        "displayOrder": 0,
        "displayName": "Local",
        "readOnly": false,
        "regEx": null,
        "required": false,
        "supportedByDefault": false,
        "attributeMapping": [
            {
                "mappedAttribute": "local",
                "userstore": "PRIMARY"
            }
        ],
        "properties": []
    },
...

Response when using any other dialect when getting claims;
[
    {
        "id":
"dXJuOnNjaW06c2NoZW1hczpjb3JlOjEuMDphZGRyZXNzZXMuZm9ybWF0dGVk",
        "claimURI": "urn:scim:schemas:core:1.0:addresses.formatted",
        "claimDialectURI": "urn:scim:schemas:core:1.0",
        "mappedLocalClaimURI": "http://wso2.org/claims/addresses.formatted";
    },
...

Currently, if the *href* shown for the local claim dialect is used to
retrieve the local claims a bad request response is thrown as retrieving
local claims has a separate endpoint defined.


There are three possible approaches;

   1. Remove the local claim dialect from listing - There can be drawbacks
   when implementing UIs as the local claim dialect will have to be separately
   listed.
   2. Change the *id* and the *href *to match the endpoint defined in the
   swagger - The schema returned for the local cliam dialect will still be
   significantly different from other dialects but a developer will see a
   difference in the *href* and the *id. *The *id* = "local" *href *= "
   
https://localhost:9443/t/carbon.super/api/server/v1/claim-dialects/local/claims
   ".
   3. Internally wire the endpoint to be directed to the endpoint defined
   in the swagger to get local claims - At development time the developer will
   not see a difference and might use the endpoint incorrectly.


[1] - https://app.swaggerhub.com/apis/janakamarasena/IS-ADMIN-CLAIMS/1.0.0

Your thoughts are much appreciated in this regards,

Thank you,
Janak

-- 
*Janak Amarasena* | Software Engineer | WSO2 Inc.
(m) +94777764144 | (w) +94112145345 | (e) ja...@wso2.com


<https://wso2.com/signature>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to