我有一個使用ADAL的客戶端/服務器身份驗證的工作版本。但是,當您想要使用本地帳戶(即,只是一個用戶名或只是一個沒有AAD以外的驗證碼的電子郵件地址)時,B2C AAD似乎不適用於ADAL。看來我們應該用於本地帳戶的API是MSAL的alpha版本。到現在爲止還挺好。我能創建使用圖形API和使用下面的代碼的本地用戶,我似乎驗證本地用戶「[email protected]」:您如何使用MSAL驗證AAD B2C?
this.pca = new PublicClientApplication("a4828eaa-42f6-418a-8062-f857130b69ce");
AuthenticationResult result = await this.pca.AcquireTokenAsync(
new string[] { "a4828eaa-42f6-418a-8062-f857130b69ce" },
string.Empty,
UiOptions.ForceLogin,
null,
null,
"https://login.microsoftonline.com/" + "darkbondpublic.onmicrosoft.com",
"B2C_1_sign-in");
的問題是,我通過安全使用WCF中的自定義安全令牌機制將'result.Token'中的令牌返回給服務器。服務器,該服務器使用ADAL上工作的代碼,似乎不再接受來自上面的調用安全令牌:
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
Microsoft.IdentityModel.Tokens.SecurityToken securityToken = null;
ClaimsPrincipal claimsPrincipal = tokenHandler.ValidateToken(userName, this.GetTokenValidationParameters(MetadataAddress), out securityToken);
Thread.CurrentPrincipal = claimsPrincipal;
的錯誤信息是:
誰能告訴我在這裏發生了什麼?我需要在服務器上進行身份驗證的另一種方法嗎?
什麼是價值的元數據地址? – Saca
private const string MetadataAddress =「https://login.microsoftonline.com/14be7990-15db-4988-bd5e-3ad4d6a16a32/federationmetadata/2007-06/federationmetadata.xml」 來自經典門戶。我沒有在新門戶中找到「端點」位置。我有一些GITHUB演示代碼可以從返回的元數據中提取簽名證書,但是,老實說,我找不到關於這個東西的白皮書,所以我不知道它有多潔淨。它適用於ADAL。 –