29 lines
1.3 KiB
C#
29 lines
1.3 KiB
C#
using Grpc.Core.Interceptors;
|
|
using Microsoft.Extensions.Configuration;
|
|
using MxGateway.Server.Configuration;
|
|
|
|
namespace MxGateway.Server.Security.Authorization;
|
|
|
|
public static class GrpcAuthorizationServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddGatewayGrpcAuthorization(this IServiceCollection services)
|
|
{
|
|
services.AddSingleton<GatewayGrpcScopeResolver>();
|
|
services.AddSingleton<IGatewayRequestIdentityAccessor, GatewayRequestIdentityAccessor>();
|
|
services.AddSingleton<IConstraintEnforcer, ConstraintEnforcer>();
|
|
services.AddSingleton<GatewayGrpcAuthorizationInterceptor>();
|
|
services
|
|
.AddOptions<global::Grpc.AspNetCore.Server.GrpcServiceOptions>()
|
|
.Configure<IConfiguration>((grpcOptions, configuration) =>
|
|
{
|
|
ProtocolOptions protocolOptions = new();
|
|
configuration.GetSection("MxGateway:Protocol").Bind(protocolOptions);
|
|
grpcOptions.MaxReceiveMessageSize = protocolOptions.MaxGrpcMessageBytes;
|
|
grpcOptions.MaxSendMessageSize = protocolOptions.MaxGrpcMessageBytes;
|
|
});
|
|
services.AddGrpc(options => options.Interceptors.Add<GatewayGrpcAuthorizationInterceptor>());
|
|
|
|
return services;
|
|
}
|
|
}
|