0

DotNetOpenAuthのドキュメントを参照しましたが、.xmlに基づいて認証プロバイダーの種類を取得する方法が見つかりませんClaimedIdentifier。次のような方法を探しています。

ProviderType providerType = ClaimedIdentifier.Parse(" .... ").Type;

プロバイダーの種類を取得する方法はありますか?

アプリケーションで状態変数を維持したり、型をクエリ文字列パラメーターとして渡したりする代わりに、DotNetOpenAuth にクエリを実行してこの情報を取得することをお勧めします。とはいえ、これは必要になりそうですね…。

4

2 に答える 2

1

私は似たようなもの、返されたプロバイダーを特定するものを見つけようとしていましたが、これまでのところ、yahoo. 役に立ちそうなもっと良いものがあれば、これは安っぽいように思えますが、今私が扱うことができるのはこれだけです。

于 2013-01-02T16:19:45.083 に答える
1

Claimed Identifier を解析してプロバイダーを特定しようとしないでください。それは一般的なケースでは機能するかもしれませんが、それが失敗する有効なケースがあり、攻撃に対して自分自身を開いている可能性もあります.

のインスタンスから ClaimedIdentifier を取得しますIAuthenticationRequest。このインターフェイスには、プロパティを持つインスタンスをProvider返すプロパティもあります。この Uri プロパティは、特に関心のあるプロバイダーを認識する方法です。たとえば、次のようになります。IProviderEndpointUri

public void Login(string userSuppliedIdentiifer, OpenIdRelyingParty rp) {
    IAuthenticationRequest request = rp.CreateRequest(userSuppliedIdentifier;
    if (request != null) {
        if (request.Provider.Uri == new Uri("https://www.google.com/o8/ud")) {
            // It's Google!
        } else if (request.Provider.Uri == new Uri("https://me.yahoo.com/whatever-it-is")) {
            // It's Yahoo!
        }

        request.RedirectToProvider();
    }
}

これが役立つことを願っています。

于 2013-01-15T06:21:10.067 に答える