Browse Source

Improved AddAbpOpenIdConnect

pull/6913/head
liangshiwei 5 years ago
parent
commit
ffdd6440a3
  1. 43
      framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Microsoft/Extensions/DependencyInjection/AbpOpenIdConnectExtensions.cs

43
framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Microsoft/Extensions/DependencyInjection/AbpOpenIdConnectExtensions.cs

@ -25,26 +25,39 @@ namespace Microsoft.Extensions.DependencyInjection
{
options.ClaimActions.MapAbpClaimTypes();
options.Events = new OpenIdConnectEvents
configureOptions?.Invoke(options);
if(options.Events != null)
{
OnAuthorizationCodeReceived = receivedContext =>
var authorizationCodeReceived = options.Events.OnAuthorizationCodeReceived;
options.Events.OnAuthorizationCodeReceived = receivedContext =>
{
var tenantKey = receivedContext.HttpContext.RequestServices
.GetRequiredService<IOptionsSnapshot<AbpAspNetCoreMultiTenancyOptions>>().Value.TenantKey;
AbpOnAuthorizationCodeReceived(receivedContext);
return authorizationCodeReceived(receivedContext);
};
}
else
{
options.Events = new OpenIdConnectEvents
{
OnAuthorizationCodeReceived = AbpOnAuthorizationCodeReceived
};
}
});
}
if (receivedContext.HttpContext.Request != null &&
receivedContext.Request.Cookies.ContainsKey(tenantKey))
{
receivedContext.TokenEndpointRequest.SetParameter(tenantKey,
receivedContext.Request.Cookies[tenantKey]);
}
private static Task AbpOnAuthorizationCodeReceived(AuthorizationCodeReceivedContext receivedContext)
{
var tenantKey = receivedContext.HttpContext.RequestServices
.GetRequiredService<IOptionsSnapshot<AbpAspNetCoreMultiTenancyOptions>>().Value.TenantKey;
return Task.CompletedTask;
}
};
if (receivedContext.Request.Cookies.ContainsKey(tenantKey))
{
receivedContext.TokenEndpointRequest.SetParameter(tenantKey,
receivedContext.Request.Cookies[tenantKey]);
}
configureOptions?.Invoke(options);
});
return Task.CompletedTask;
}
}
}

Loading…
Cancel
Save