4

Azure では、以下を取得して、登録済みの ID プロバイダーのリストを取得できます。

https://YourNamespace.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?
    protocol=wsfederation&
    realm=YourAppRealm&
    reply_to=YourAppReturnURL&
    version=1.0

ユーザーがサインインすると、認証に使用されたプロバイダーを識別するID プロバイダー クレームが取得されます。

問題は、どのID プロバイダー クレームIdentityProvider.jsが使用されるかをリソースが教えてくれないことです。

例えば:

  • Windows Live IDはクレーム値を使用しますuri:WindowsLiveID
  • Googleはクレーム値を使用しますGoogle
  • ADFS ID プロバイダーは、次のようなクレーム値を使用できます。http://adfs.mycompany.com/adfs/services/trust

ID プロバイダーのクレーム値と によってリストされた ID プロバイダーとの間でマッピングできる必要がありますIdentityProviders.js

これは、特定の ID プロバイダーによって識別されるユーザーにアクセス許可を割り当てる必要があるためです。ユーザーが簡単に選択できるように、ID プロバイダーのリストを提供します (つまり、から取得したデータを提示しますIdentityProviders.js)。ただし、実際の割り当ては ID プロバイダーのクレーム値を使用して行う必要があります。これがプロバイダーを識別するものだからです。

これは可能ですか?回避策はありますか?

どんな助けでも大歓迎です!

4

4 に答える 4

1

IdentityProviders.js はこの目的のためのものではないため、この問題が発生しています。最も簡単な解決策は、これらの値をアプリにハードコーディングすることです。それをしたくない場合は、OData Management Service を介してこれらの値を取得できます。管理サービスを介して見つけた ID プロバイダーごとに、IdentityProvider 要求値は idp.Issuer.Name になり、IdentityProviders.js にリストされている値は idp.LoginLinkName (または、LoginLinkName が指定されていない場合は idp.DisplayName) になります。

于 2013-06-27T18:50:19.417 に答える
1

"Rule group -> "choose one" -> "Add" を使用して ID プロバイダーの独自の値を構成し、"input claim ..." を any/any のままにして、同じカスタム クレーム タイプで出力クレーム タイプを構成できます。各 ID プロバイダー。例:

"http://mycustomtype.com/usethisclaimvalue" + "uri:WindowsLiveID"

Windows Live 用。

次に、この追加されたクレームをアプリケーション内の switch 演算子のソースとして使用できます。

于 2013-07-01T06:06:45.547 に答える
0

これを解決する方法は、IdentityProvider.js からの名前の値と一致するように出力値をハードコーディングした、ID プロバイダーごとに ACS でカスタム ルールを作成することでした。このように、ハードコードされた値は ACS にあり、複数のアプリケーションがある場合はアプリケーション固有ではありません。

ルールの設定方法の例を次に示します。- http://screencast.com/t/jfDqX0cqu

于 2013-07-02T20:54:42.850 に答える