2010-08-24 30 views
5

Her OpenId sağlayıcısının bir sağlayıcı URL'si (ör. Google: https://www.google.com/accounts/o8/id)DotNetOpenAuth: Basit bir OpenId sağlayıcısı nasıl uygulanır?

OpenIdRelyingParty.CreateRequest kullanma Kullanıcıyı Google sağlayıcı Url'ye yönlendirmeyi başarılı bir şekilde yönetmeyi ve sağlayıcı geri bildirimini almayı başardım. Her şey iyi çalıştı.

Şimdi kendi basit OpenId sağlayıcımı uygulamaya çalışıyorum (örneğimde Google gibi davranmak istiyorum). DotNetOpenAuth, OpenIdProviderWebForms adlı bir sağlayıcı demosuna sahiptir. Son 4 veya 5 saat boyunca, Google'a bağlanmayı başardığım aynı demoyu kullanarak bağlanmayı denedim. Birincisi, benim için hangi URL'yi çağırmam gerektiği açık değil. Tüm URL'leri (server.aspx, provider.ashx ...) denedim ve hepsi "No OpenID son noktası bulunamadı" özel durum tetiklemiş. Tüm konfigürasyonlar iyi görünüyor.

Basit bir OpenId sağlayıcısı nasıl uygularım? Xzx10'da hangi URL'yi aramalıyım?

cevap

16

İlk önce bazı terimleri kurmak bakalım:

User-supplied identifier

OpenID keşfini tetikler aslında türleri (veya RP de önceden tanımlanmış bir düğmeye tıklayarak tetiklenir) kullanıcı gerçekleşmesi olduğunu dizedir. Normalleştirilmemiş ve veritabanında kullanıcıyı temsil etmek için kullanılmamalıdır, çünkü güvenli veya benzersiz değildir, ancak bu gerekli bir başlangıç ​​noktasıdır. Bu tanımlayıcı üzerindeki keşif, bir claimed identifier veya bir OP Identifier. Örnekler: yahoo.com, myopenid.com, andrewarnott.myopenid.com

Claimed Identifier, kullanıcının "denetlediği" veya kimliğini kullandığı OpenID Tanımlayıcısıdır. Bir URL (bu bir XRI olabilir) olabilir veya olmayabilir. Bir OP'den gelen olumlu bir iddia her zaman talep edilen bir tanımlayıcı olacaktır (keşif bir OP Tanımlayıcı ile başlamış olsa bile). Örnekler: https://andrewarnott.myopenid.com/

OP Identifier veya "OpenID Sağlayıcı Tanıtıcı" OpenID tanıtıcısında RP henüz kullanıcının İddia Edilen Tanıtıcı ne olacağını bilmiyor bir identifier select akışını başlatmak için üzerine RPS keşif yapabilir olmasıdır. Örnekler: https://me.yahoo.com/, http://www.myopenid.com/ ve https://www.google.com/accounts/o8/id

OP Endpoint RP kullanıcının kimliğini doğrulamak amacıyla kullanıcıyı yönlendirdiği gerçek bir URL olduğunu ve paylaşılan dernek kurma veya OP özel kullanan bir iddianın doğrudan doğrulamasını gerçekleştirmek için kullanılır birliği. Örnekler: http://localhost/server.aspx, http://localhost/provider.ashx, https://www.google.com/accounts/o8/ud tüm bu birikimi olan

(yerine id bitiş ud dikkat edin), aynı zamanda bir iddia tanımlayıcı veya OP tanıtıcı olabilecek bir kullanıcı tarafından sağlanan bir tanımlayıcı, alması gereken sizin OpenIdRelyingParty.CreateRequest çağrı. OP uç noktası olmakolmalıdır. Yani, örneğin, içeri geçmesi olabilir:

openIdRelyingParty.CreateRequest("http://localhost/sampleop/") 

veya DotNetOpenAuth MVC örnekler için

openIdRelyingParty.CreateRequest("http://localhost/user.aspx?username=bob") 
+2

Andrew, tüm bu açıklamalar için çok teşekkür ederim +1. Bu kavramları açıklığa kavuşturmamda gerçekten yardımcı oldu. Birbirine bağlanmak için 2 DotNetOpenAuth demolarını başarılı bir şekilde yapmayı başardım (OP ve RP) ancak kendi OP'imi oluşturamadım ve ona bağlanamadım.Çok açıklayıcı bir hata olmayan "No OpenId uç noktaları bulundu" mesajını almaya devam edin. Projeniz (DotNetOpenAuth) harika görünüyor, ancak belgelere sahip değil. Aslında, openid'in belgelere sahip olmadığını düşünüyorum. Bu kavramları başka bir yere yönlendiremedim. Yine de teşekkürler :) –

+0

@ André Pena, OP'imi işe almak için günlerce uğraşıyorum. ama aynı problemi yaşıyorsun. Bunu çözdün mü? –

2

kullanmak Açık Kimliği Tanıtıcı url OpenIdProviderMvc üzerinde port 4864 üzerinde çalışacak şekilde yapılandırılır http://localhost:4864/User/Identity (olduğu localhost)