14

OpenID コミュニティが機能しているという事実にもかかわらず、私は OpenID コミュニティを真剣に疑い始めています。

私は現在、「この」サイトの認証サービスとして OpenID を評価している最中です。約束は素晴らしいものですが、うまく機能させることができません。そして、私は本当に迷っています。

ここで私を助けてくれるよう、SO コミュニティにお願いします。答えを教えて、例を示してください。これを本来の方法で活用できるようにします。

私のシナリオは非常に典型的です。特定の Google Apps ドメインを通じてユーザーを認証したいと考えています。この Google Apps ドメインにアクセスできる場合は、私のウェブ アプリケーションにアクセスできます。

私が迷子になるのは、すべての前提条件と依存関係です。

  1. XRDとは?
  2. ヤディスとは?
  3. なぜ XRD と Yadis が必要なのですか?
  4. Web サイトに OpenID 認証を導入するには、何をする必要がありますか?

また、これは私にとって非常に重要です。

SO にログインするときは、Google アカウントを使用します。ログインボタンをクリックすると、この確認ページが表示されます。Google アカウントの認証情報を使用する権利を SO に付与する場合。

どういうわけか、Google は、ログインしてもよいかどうか尋ねてきたのが「Stackoverflow.com」であることを認識しています。そして、この小さなテキストをどのように制御できるかを知りたい. 私はいくつかの異なるドメインに OpenID をデプロイするつもりですが、シークレット API キーなどの特別なパラメーターで個別に構成する必要なく、すべてが機能することを望んでいます。ただし、これが OpenID の前提条件なのか、それとも Google が提供する Federated Login API の前提条件なのかはわかりません。

4

4 に答える 4

6

実際にあなたの質問に答えるために(つまり、すべての議論のポイントを無視して)、私が話しているように、私のサイトの1つにOpenID認証を実装するためにDotNetOpenAuthを使用しています。そしてそれは非常に些細なことでした。

これは単なる .NET コントロールであり、それをドロップし、ごくわずかなものを構成してから、フォーム認証にリンクさせます。けっこういい。

于 2010-01-27T11:18:30.930 に答える
3

私は実際に私の問題の解決策を見つけました、そして驚くべきことに、それは非常に簡単でした。私はまだXRDSとYadisを理解していませんが、私はそれをとても簡単に活用しています。

あなたが望むもの、そしてあなたが探しているのは、OpenIDの「リレーパーティー」を行うためのコードです。それは、OpenIDプロバイダーの消費者としての「あなた」です。OpenIDエンドポイントを入力すると、出来上がり、OpenIDがサイトで有効になります。このコードは、実際にそれを示しています。

// using DotNetOpenAuth
var openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response == null)
{
    // Google account end point (works fine)
    var googleID = "https://www.google.com/accounts/o8/id";
    // Google hosted account end point
    //  https://www.google.com/accounts/o8/site-xrds?hd=mydomain.com
    // I was unable to test this, but I was running my RP (this code)
    // from localhost and it's quite possible that a hosted account RP
    // has to return to the same domain.
    // It went fine, but crashed with a "Unable to resolve mydomain.com" error
    // once I logged in.
    openid.CreateRequest(googleID).RedirectToProvider();
}
else
{
    switch (response.Status)
    {
        case AuthenticationStatus.Authenticated:
            // Success
            // to allow persistance across sessions
            // you'll have to track the "claimed identifier"
            // some OpenID providers allow you to get an email address through
            // extensions but this is not always possible.
            // the claimed identifier is typically your safest bet
            // and it's a big URL which uniquely identifies the guest
            // as a specific user, however, you know very little about this user
            // which is a good thing becuase you don't have to give out personal or
            // sensitive information to start using a service.
            break;

        default:
            // Something went wrong, check Status property
            break;
    }
}

これを理解していると、すべてのスペックから印象を受けました。私は自分の「OpenIDプロバイダー」をホストすることになっていたので、アカウントやプロセスの一部を処理することになっているように聞こえました。実際、私がしなければならなかったのはこれだけでした。

そのURLをリクエストするか、それに応じてOpenIDリクエストを受け取った場合。そのリクエストに有効なログイン情報が含まれているかどうかを確認してください。

于 2010-01-27T21:13:17.593 に答える
2

あなたは本当にRPXを調査したいとお考えのようですね。これは、開発者 (およびユーザー) が OpenID などの好みの認証メカニズムを簡単に使用できるようにするソリューションです。

サード パーティの ID プロバイダーと Web サイトの間のプロキシとして機能する RPX は、Facebook、Google、Yahoo!、Twitter、MySpace、AOL、Windows Live/MSN/Hotmail、またはその他の OpenID プロバイダーの既存のアカウントでユーザーを簡単に認証するのに役立ちます。

于 2010-01-27T08:05:52.823 に答える