Beispiel #1
0
        public async Task <string> GetNextAmr(string actualAcr, IEnumerable <string> actualAmrs)
        {
            if (string.IsNullOrWhiteSpace(actualAcr))
            {
                throw new ArgumentNullException(nameof(actualAcr));
            }

            if (actualAmrs == null)
            {
                throw new ArgumentNullException(nameof(actualAmrs));
            }

            var acr = await _authenticationContextclassReferenceRepository.Get(actualAcr).ConfigureAwait(false);

            if (acr == null)
            {
                return(null);
            }

            if (actualAmrs.Count() < acr.AmrLst.Count())
            {
                return(acr.AmrLst.ElementAt(actualAmrs.Count()));
            }

            return(null);
        }
Beispiel #2
0
        private async Task SetAcr(AuthorizationParameter authorizationParameter, ActionResult actionResult)
        {
            if (authorizationParameter.AcrValues == null || !authorizationParameter.AcrValues.Any())
            {
                await SetDefaultAcr(actionResult).ConfigureAwait(false);

                return;
            }

            var acrLst = await _authenticationContextclassReferenceRepository.Get(authorizationParameter.AcrValues).ConfigureAwait(false);

            var selectedAcrName = authorizationParameter.AcrValues.FirstOrDefault(a => acrLst.Any(ac => ac.Name == a));
            var selectedAcr     = acrLst.FirstOrDefault(a => a.Name == selectedAcrName);

            if (selectedAcr == null)
            {
                await SetDefaultAcr(actionResult).ConfigureAwait(false);

                return;
            }

            actionResult.Acr    = selectedAcr.Name;
            actionResult.AmrLst = new List <string> {
                selectedAcr.AmrLst.First()
            };
        }