Rifat Akarca Blog

Secure Aspect Nedir?

103 Okunma 30.10.2024
Secure Aspect Nedir?

Secure aspect, bir web uygulamasında güvenlik ile ilgili işlemlerin merkezi bir noktadan yönetilmesini sağlayan bir tasarım kalıbıdır.

Secure aspect, Aspect Oriented Programming (AOP) ile uygulanabilir. AOP, kesişen ilgiler (cross cutting concerns) olarak adlandırılan, uygulamanın farklı katmanlarında ortak olarak kullanılan işlemlerin merkezi bir noktadan yönetilmesini sağlayan bir programlama paradigmasıdır.

Secure aspect, AOP’nin bir uygulaması olarak, güvenlik ile ilgili işlemleri yönetir.

Örneğin, bir web sitesinde kullanıcıların yetkilendirilmesi, kimlik doğrulaması, şifreleme, güvenli bağlantı kurma gibi işlemler secure aspect ile gerçekleştirilebilir.

Secure aspect, genellikle web uygulamalarının başlatılması sırasında veya belirli metotların çağrılması sırasında devreye girer.

Secure aspect, Interceptor adı verilen yapılarla uygulanabilir. 

Interceptor, metot çağrımları sırasında araya girerek kesişen ilgileri işletmemizi ve yönetmemizi sağlamaktadır.

public class SecureAspect : MethodInterception
{
    private readonly string[] _roles;
    private readonly IHttpContextAccessor? _httpContextAccessor;

    public SecureAspect(string roles)
    {
        _roles = roles.Split(',');
        _httpContextAccessor = ServiceTool.ServiceProvider!.GetService<IHttpContextAccessor>();
    }
    
    protected override void OnBefore(IInvocation invocation)
    {
        if (_httpContextAccessor!.HttpContext != null)
        {
            var roleClaims = _httpContextAccessor.HttpContext.User.ClaimRoles();
            foreach (var role in _roles)
            {
                if (roleClaims!.Contains(role))
                {
                    return;
                }
            }
        }

        throw new AuthenticationException(ApiMessages.AuthenticationDenied);
    }
}