Basit bir REST API'si olan bir ürünüm var, böylece ürün kullanıcıları web kullanıcı arayüzümü kullanmadan ürünün özellikleriyle doğrudan entegre olabilirler.
Son zamanlarda, ürünümün kullanıcılarının bu üçüncü taraf uygulamasını kullanarak verilerine erişmesine izin vermek için masaüstü istemcilerini API ile entegre etme konusunda çeşitli üçüncü taraflardan ilgi duyuyorum.
Twitter'ı kullanmak isteyen uygulamaların, Twitter tarafından barındırılan ve bu kullanıcının verilerine erişmek için belirli bir uygulama izni veren bir giriş sayfası kullanarak kimlik doğrulaması yaptığını gördüm. "İzin ver" veya "Reddet" düğmesini tıklarsınız ve kimlik doğrulama işlemi tamamlanır. Facebook söyleyebileceğim en iyi mekanizmayı kullanıyor.
Daha fazla araştırma üzerine, bu eylem OAuth gibi görünüyor ve benim API .Net tabanlı olduğunu görmek, ben DotNetOpenAuth kullanmak ve benzer bir mekanizma sağlamak gerektiğini düşünüyorum. Ne yazık ki örnekler seyrek olarak belgelenmiştir (eğer varsa) ve çevrimiçi bulabileceğim tek öğretici, üçüncü taraf sağlayıcı kullanarak web sitenize giriş yapabilmeniz için kullanıcılarınız için bir giriş mekanizması sağlamanıza odaklanmış gibi görünmektedir.
Gerçekten ne yapmak istiyorum benim REST API benim web uygulaması için tüm temel kimlik doğrulama ve iş mantığı işlemek ve başlık altında, benim web uygulaması aslında sadece OAuth üzerinden API kullanan başka bir uygulama var. Kullanıcılar web sitesinde doğrudan kullanıcı adlarını ve şifrelerini kullanarak veya MyOpenID veya Facebook gibi bir üçüncü taraf sağlayıcı aracılığıyla kimlik doğrulaması yapar ve ardından web sitesi bir şekilde REST API'sine karşı kimlik doğrulaması yapmak için döndürülen jetonu kullanır.
Temelde bir şekilde bir OAuth hizmetini barındırmak için API'ma ihtiyacım var gibi görünüyor, ancak kullanıcıların üçüncü taraf bir OAuth hizmetini kullanmasını sağlıyor. Yardımcı olamıyorum ama OAuth üzerinde aşırı karmaşık olup olmadığım ya da yapmaya çalıştığım şeyin bir şeyler yapmak için iyi ya da kötü bir yol olup olmadığına karar vermek için yeterince kavrayışım olmadığını düşünüyorum.
Birisi bana atmam gereken adımlar hakkında en azından geniş bir genel bakış verebilir mi ya da bunun gerçekleşmesi için nelere bakmalıyım? Ya da beni bazı derslere yönlendiriyor musunuz? Ya da teklifimi patlat ve bana (mimari olarak) bunların hepsini yanlış yaptığımı söyle?