Example #1
0
        public override async Task <InteractionResponse> ProcessInteractionAsync(ValidatedAuthorizeRequest request, ConsentResponse consent = null)
        {
            var result = await base.ProcessInteractionAsync(request, consent);

            if (!result.IsLogin && !result.IsConsent && !result.IsRedirect && !result.IsError)
            {
                var tenantAcr   = request.GetTenantAcrValue();
                var claim       = request.Subject?.Claims.SingleOrDefault(c => c.Type == AppClaimTypes.Tenant);
                var tenantClaim = claim?.Value.ToLowerInvariant();
                if (!string.IsNullOrEmpty(tenantAcr) && !string.IsNullOrEmpty(tenantClaim))
                {
                    Logger.LogInformation("Validating tenant. Cookie tenant: {0}, acr tenant: {1}", tenantClaim, tenantAcr);
                    return(new InteractionResponse {
                        IsLogin = tenantClaim != tenantAcr
                    });
                }
            }

            return(result);
        }