RabbitMQ'da OAuth Scopes: Giriş Bilgisi Değil, Broker İzni

RabbitMQ'da OAuth 2.0 kullanırken çoğu kişi scopes'u sadece giriş bilgisi sanır. Oysa asıl işi burada başlıyor: token doğrulandıktan sonra broker, o token'ın hangi virtual host'lara, queue'lara ve exchange'lere erişebileceğini belirlemek zorunda.

OAuth 2.0 yerel kullanıcıları ortadan kaldırıyor ama izin haritası kalıyor. RabbitMQ'da bu harita scopes ve tags aracılığıyla kurulur. Token başarıyla doğrulandı diye izinler otomatik olarak dar olmaz; token'ın içerdiği policy girdileri RabbitMQ'nun OAuth backend'i tarafından JWT access token'ından okunur ve scope'lara çevrilir.

Broker desteklediği scope'ları bilmeli. Eğer identity provider'ın scopes'ları standart claim field'ında değil başka bir yerde tutuyorsa, `auth_oauth2.additional_scopes_key` parametresiyle o field'ı gösterebilirsin. Birden fazla OAuth resource server'a güvenen bir RabbitMQ cluster'ında ise bu server'lar `auth_oauth2.resource_servers` altında tanımlanır.

Pratik olarak: token'ın scope'ları `rabbitmq.configure:vhost_name/`, `rabbitmq.write:vhost_name/`, `rabbitmq.read:vhost_name/*` formatında olmalı. Broker bu scope'ları parse ederek hangi işleme izin vereceğini karar verir. Scopes'lar ne kadar dar tanımlanırsa, token'ın zarara uğraması durumunda risk o kadar sınırlı olur.

OAuth 2.0 geçişinde en sık yapılan hata, token'ı sadece kimlik doğrulama aracı olarak görmek. Gerçekte o token'ın scope'ları, RabbitMQ'nun izin sisteminin temelini oluşturuyor. Detaylı kaynak için linkini kontrol et.

konu hakkında tepkinizi verebilirsiniz