1

アプリケーションに Window Azure プラットフォームを使用しており、Google/Yahoo のアカウントからユーザーの情報を取得しようとしています。

しかし、私が取得する情報は、名前、電子メール アドレス、および Azure の入力/出力要求を介した ID プロバイダーだけです...Google/Yahoo に登録したときに、国または携帯電話番号を取得するのを手伝ってくれますか?

クレームを取得するためのサンプル コードを次に示します。

protected void Page_Load(object sender, EventArgs e)
    {
        {
            ClaimsPrincipal icp = Thread.CurrentPrincipal as ClaimsPrincipal;
            ClaimsIdentity claimsidentity = icp.Identity as ClaimsIdentity;
            string  email = "", name = "", idprovider = "" ;
            foreach (Claim c in claimsidentity.Claims)
            {

                if (c.ClaimType == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
                {
                    email = c.Value;
                }
                if (c.ClaimType == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name")
                {
                    name = c.Value;
                }
                if (c.ClaimType == "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider")
                {
                    idprovider = c.Value;
                }

            }

            Label1.Text = (name + email + idprovider);

ルールを編集しているときに、ClaimsPrincipal が国/携帯電話番号の値をアカウントにカウントしていません....PLZ HELP !!!!!

4

1 に答える 1

2

私の知る限り、直接ではありません。

ユーザーが自分の ID をアプリケーションに提供することに同意する場合、必ずしも同意するとは限らず、プロファイル情報をあなたと共有することに明示的に同意するわけではないため、ID プロバイダーは実際にそうするべきではありません。

私の謙虚な意見では、一部のプロバイダーはすでに提供しすぎています。Microsoft のように、GUID 以外のものを共有するとは思っていませんでした。たとえば、Google は名前とメール アドレスを共有していますが、私は必ずしもそれを許可したくありませんでした。多くの場合、Gmail の電子メール アドレスを非公開にして、サインインしているアプリケーションに別のアドレスを提供するか、まったく提供しないことを好みました。

要するに、ユーザーに関する情報が必要な場合は、ユーザーに尋ねるべきであり、他の場所から入手してはならないというのが見解です。

このビューの詳細、興味がある場合はこちら - http://yossidahan.wordpress.com/2012/02/19/end-to-end-authentication-and-authorisation-scenario-for-mvcacs/

于 2013-03-04T09:58:43.697 に答える