public static IEnumerable <AuthorizationRequestClaimParameter> ExtractClaims(this JObject jObj, AuthorizationRequestClaimTypes type)
        {
            if (jObj == null)
            {
                return(new AuthorizationRequestClaimParameter[0]);
            }

            var result = new List <AuthorizationRequestClaimParameter>();

            foreach (var rec in jObj)
            {
                var claimName = rec.Key;
                var child     = rec.Value as JObject;
                if (child != null)
                {
                    IEnumerable <string> values = null;
                    if (child.ContainsKey(ClaimsParameter.Value))
                    {
                        values = new[] { child.GetStr(ClaimsParameter.Value) };
                    }

                    if (child.ContainsKey(ClaimsParameter.Values))
                    {
                        values = child.GetArray(ClaimsParameter.Values);
                    }

                    result.Add(new AuthorizationRequestClaimParameter(claimName, values, child.GetBoolean(ClaimsParameter.Essential), type));
                }
            }

            return(result);
        }
 public AuthorizationRequestClaimParameter(string name, IEnumerable <string> values, bool isEssential, AuthorizationRequestClaimTypes type) : this(name, values)
 {
     IsEssential = isEssential;
     Type        = type;
 }
Пример #3
0
 public static void EnrichWithClaimsParameter(JwsPayload payload, IEnumerable <AuthorizationRequestClaimParameter> requestedClaims, OAuthUser user, DateTime?authDateTime, AuthorizationRequestClaimTypes claimType = AuthorizationRequestClaimTypes.IdToken)
 {
     if (requestedClaims != null)
     {
         foreach (var claim in requestedClaims.Where(c => c.Type == claimType))
         {
             if (USER_CLAIMS.Contains(claim.Name))
             {
                 payload.TryAdd(claim.Name, user.Claims.First(c => c.Key == claim.Name).Value);
             }
             else
             {
                 if (claim.Name == OAuthClaims.AuthenticationTime && authDateTime != null)
                 {
                     payload.Add(OAuthClaims.AuthenticationTime, authDateTime.Value.ConvertToUnixTimestamp());
                 }
             }
         }
     }
 }
Пример #4
0
 public static OAuthConsent GetConsent(this OAuthUser user, string clientId, IEnumerable <string> scopes, IEnumerable <AuthorizationRequestClaimParameter> claims, AuthorizationRequestClaimTypes claimType = AuthorizationRequestClaimTypes.IdToken)
 {
     return(user.Consents.FirstOrDefault(c => c.ClientId == clientId &&
                                         (scopes == null || (scopes.Where(s => s != SIDOpenIdConstants.StandardScopes.OpenIdScope.Name).All(s => c.Scopes.Any(sc => sc.Name == s)))) &&
                                         (claims == null || (claims.Where(cl => cl.Type == claimType && cl.IsEssential && Jwt.Constants.USER_CLAIMS.Contains(cl.Name))
                                                             .All(cl => c.Claims.Any(scl => scl == cl.Name))))));
 }
Пример #5
0
 public static bool HasOpenIDConsent(this OAuthUser user, string clientId, IEnumerable <string> scopes, IEnumerable <AuthorizationRequestClaimParameter> claims, AuthorizationRequestClaimTypes claimType = AuthorizationRequestClaimTypes.IdToken)
 {
     return(user.GetConsent(clientId, scopes, claims, claimType) != null);
 }
        public static IEnumerable <AuthorizationRequestClaimParameter> GetClaimsFromAccessToken(this JwsPayload jObj, AuthorizationRequestClaimTypes type)
        {
            if (!jObj.ContainsKey(AuthorizationRequestParameters.Claims))
            {
                return(new AuthorizationRequestClaimParameter[0]);
            }

            var claims = jObj[AuthorizationRequestParameters.Claims] as JObject;

            return(claims.ExtractClaims(type));
        }
 public virtual void EnrichWithClaimsParameter(JwsPayload payload, IEnumerable <AuthorizationRequestClaimParameter> requestedClaims, OAuthUser user = null, DateTime?authDateTime = null, AuthorizationRequestClaimTypes claimType = AuthorizationRequestClaimTypes.IdToken)
 {
     if (requestedClaims != null)
     {
         foreach (var claim in requestedClaims.Where(c => c.Type == claimType))
         {
             if (AllUserClaims.Contains(claim.Name) && user != null)
             {
                 payload.AddOrReplace(user.Claims.First(c => c.Type == claim.Name));
             }
             else
             {
                 if (claim.Name == OAuthClaims.AuthenticationTime && authDateTime != null)
                 {
                     payload.Add(OAuthClaims.AuthenticationTime, authDateTime.Value.ConvertToUnixTimestamp());
                 }
             }
         }
     }
 }
 public override void EnrichWithClaimsParameter(JwsPayload payload, IEnumerable <AuthorizationRequestClaimParameter> requestedClaims, OAuthUser user = null, DateTime?authDateTime = null, AuthorizationRequestClaimTypes claimType = AuthorizationRequestClaimTypes.IdToken)
 {
     base.EnrichWithClaimsParameter(payload, requestedClaims, user, authDateTime, claimType);
     if (requestedClaims != null)
     {
         var requestedClaim = requestedClaims.FirstOrDefault(c => c.Name == _options.OpenBankingApiConsentClaimName);
         if (requestedClaim != null)
         {
             payload.Add(_options.OpenBankingApiConsentClaimName, requestedClaim.Values.First());
         }
     }
 }