私はazureアクティブディレクトリ認証にgoogleとmicrosoftアカウントを使用しています。 AADから認証した後、アクセストークンを返します。リクエストヘッダーを渡しています。トークンのベースでは、私は現在のプロバイダの詳細を取得したい。これは、ヘッダーで渡しているトークンの助けを借りてWeb APIコードのユーザーの詳細を取得することは可能ですか?Azureのアクティブディレクトリトークンを持つプロバイダの詳細
答えて
/.auth/me
エンドポイントからすべての種類の情報を取得できます。あなたはXamarinフォームとAzureのモバイルアプリを使用しているので:
List<AppServiceIdentity> identities = null;
public async Task<AppServiceIdentity> GetIdentityAsync()
{
if (client.CurrentUser == null || client.CurrentUser?.MobileServiceAuthenticationToken == null)
{
throw new InvalidOperationException("Not Authenticated");
}
if (identities == null)
{
identities = await client.InvokeApiAsync<List<AppServiceIdentity>>("/.auth/me");
}
if (identities.Count > 0)
return identities[0];
return null;
}
プロバイダとプロバイダ:
using System.Collections.Generic;
using Newtonsoft.Json;
namespace TaskList.Models
{
public class AppServiceIdentity
{
[JsonProperty(PropertyName = "id_token")]
public string IdToken { get; set; }
[JsonProperty(PropertyName = "provider_name")]
public string ProviderName { get; set; }
[JsonProperty(PropertyName = "user_id")]
public string UserId { get; set; }
[JsonProperty(PropertyName = "user_claims")]
public List<UserClaim> UserClaims { get; set; }
}
public class UserClaim
{
[JsonProperty(PropertyName = "typ")]
public string Type { get; set; }
[JsonProperty(PropertyName = "val")]
public string Value { get; set; }
}
}
その後、次の主張を取得するために使用します。請求のためのモデルを設定し
トークンはモデル内にあります。プロバイダによって返されたすべての要求は、UserClaims
オブジェクトにあり、LINQを使用してアクセスできます。たとえば、名前取得する:あなたは私の本のセクションからより多くの情報を得ることができます
var identity = await service.GetIdentityAsync();
if (identity != null) {
name = identity.UserClaims.FirstOrDefault(c => c.Type.Equals("name")).Value;
}
を:アクセストークンのhttps://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter2/authorization/
クライアント側で.auth/meを使用してユーザーのdetialを取得できることはわかっていますが、サーバー側でユーザーの詳細を取得したいのですが、ウェブAPIのトークンの助けを借りて。 –
サーバー側については、こちらを参照してください。https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-dotnet-backend-how-to-use-server-sdk/#user-info –
ありがとう、アドリアンホール。私はそれが働いていることを試みました。 –
- 1. 複数の詳細バンドを持つJasperReports
- 2. GithubAPI - レポIDを持つリポジトリの詳細
- 3. 詳細情報のための複数のXibを持つ詳細DetailViewのデータアクセス
- 4. [stimulsoft]:3つの別個の詳細を持つ1つのマスター
- 5. Azure PSコマンドレット(ARMのディスク詳細用)
- 6. Azure関数詳細トレースアプリケーションログへのログ
- 7. 2つのHTMLテーブルを持つASP.NET MVCのマスター/詳細
- 8. Crystal Reports詳細の詳細
- 9. azureトークンでGoogleユーザー詳細を読む
- 10. ウェブサイトのユーザーの詳細を保持
- 11. 特定のクラスを持つmouseoverアイテムの詳細を表示
- 12. インデックスは、私は次の詳細を持つテーブルがある
- 13. Mono GTK#複数のビュー(アイコン、詳細、リストなど)を持つビューリスト
- 14. Azure:プログラムの使用方法の詳細をダウンロードするには?
- 15. SQL ServerからAzureデータファクトリジョブのジョブの詳細を取得する
- 16. ユーザーIDを持つAzure B2C Active Directoryからユーザーの詳細を取得する方法
- 17. エラー:「詳細」のための反転が見つかりません。 「詳細は」
- 18. GameCenterの詳細
- 19. 詳細のアンダーレイチャート
- 20. デリゲートの詳細
- 21. StreamWriterの詳細
- 22. MySQLの詳細
- 23. イオン2:同じ値を持つ詳細を作成する
- 24. Azure Service PrinicpalのVSTSリリースの詳細へのアクセス
- 25. WPF MVVM DataGridとTabControlを持つマスター詳細ビュー
- 26. 異なるHTTPリクエストを持つマスター詳細コンセプトionic
- 27. jqGrid詳細検索ダイアログ - ドロップダウン選択を持つ列
- 28. azureを使用したVMの詳細プロパティ
- 29. Azureグループの詳細をJWTトークンから取得する
- 30. Azure、コード.NETからアプリケーションサービスの詳細を取得
、どのようなことは、このですか? – Biscuits
WS-Federationを使用すると、SAMLトークンのクレームセットからIDプロバイダを取得できます。クレームタイプは「idp」と呼ばれます。 – Biscuits
私はこのコードをxamarinフォームで使用しています。var user = DependencyService.Get()。LoginAsync(azureService.MobileService、provider); "MobileServiceAuthencticationToken"でトークンを取得しています –