我已經使用谷歌和微軟賬戶進行azure活動目錄驗證。從AAD認證後,它返回訪問令牌。我們正在傳遞請求標題。在令牌的基礎上,我想獲得當前提供者的詳細信息。這是可能得到用戶在Web API API的代碼的細節,在標題的幫助下,我通過標題?提供者與Azure活動目錄令牌的詳細信息
回答
您可以從/.auth/me
端點獲取各種信息。由於您使用Azure的移動應用與Xamarin形式:
建立一個模型所聲稱的:
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; }
}
}
然後使用以下方法來獲取索賠:
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;
}
的供應商和供應商標記在模型中。任何由提供者返回的聲明都在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獲得用戶的詳細信息,但是我想在服務器端獲取用戶的詳細信息,我的意思是我想獲取詳細信息在web api中藉助令牌。 –
服務器端記錄在這裏:https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-dotnet-backend-how-to-use-server-sdk/#user-info –
謝謝阿德里安霍爾。我試過它正在工作。 –
- 1. 從JWT令牌檢索Azure組詳細信息
- 2. 用azure令牌閱讀谷歌用戶詳細信息
- 3. 活動目錄 - 獲取新創建的帳戶詳細信息
- 4. 獲取當前位置的提供者詳細信息在iPhone
- 5. 獲取用戶活動目錄詳細信息
- 6. 託管後未獲取活動目錄用戶詳細信息
- 7. 如何驗證Json Web令牌並提取詳細信息
- 8. sp_addlinkedserver無目錄詳細信息
- 9. Windows臨時目錄詳細信息(Java)
- 10. Crystal Reports詳細信息詳細信息
- 11. Android主詳細信息詳細信息
- 12. Box API V2 /協作?status = pending不提供項目詳細信息
- 13. XCode項目詳細信息?
- 14. 如何從單一登錄獲取活動目錄詳細信息?
- 15. 網站訪問者的詳細信息
- 16. Egit更改作者和提交者詳細信息
- 17. ListView項目詳細信息屏幕:新建或同一活動?
- 18. 向webapi不記名令牌添加額外的詳細信息
- 19. AWS安全令牌服務協議的詳細信息
- 20. 從Azure工作者角色獲取異常詳細信息
- 21. 導航到其他活動時活動詳細信息丟失
- 22. 檢索當前活動目錄用戶詳細信息C#Web Api
- 23. Azure - 從API管理記錄請求到EventHub的詳細信息
- 24. 詳細信息:「CSRF失敗:CSRF令牌丟失或不正確。」
- 25. 令牌卡詳細信息iFrame - 服務器錯誤5003
- 26. Yii2提供ActiveRecord模型數據庫結構的詳細信息
- 27. CloudWatch可以提供服務器或elb的詳細信息嗎?
- 28. 未提供任何詳細信息的Facebook API共享響應
- 29. 黃瓜失敗的情況下不提供詳細信息(Ubuntu)
- 30. 如何讓Apache提供403響應代碼的詳細信息?
什麼樣的訪問令牌是這樣嗎? – Biscuits
使用WS-Federation,我可以從SAML令牌的聲明集中獲取身份提供者。索賠類型被稱爲'idp'。 – Biscuits
我已經在xamarin表單中使用了這段代碼,var user = await DependencyService.Get()。LoginAsync(azureService.MobileService,provider); 我在「MobileServiceAuthencticationToken」中獲取令牌 –