ADFS:以编程方式获取令牌

时间:2019-03-04 15:41:33

标签: azure adfs msal

因此,我们建立了一组由ADFS(MSAL)保护的Azure功能

我们已经在ADFS中配置了一个应用程序,并使其与我们的Android客户端都能正常运行。

我们现在要进行一些API测试,因此我们希望以编程方式生成Auth令牌以测试API

我根本无法使以下代码正常工作,也许我的租户ID错误,在应用程序配置中,它是一个GUID(42b03d0b-d7f2-403e-b764-0dbdcf0505f6),但示例显示这是我们的域

size.height + 100

更新

因此将代码更改为MSAL,仍然尝试通过用户名和密码登录。现在只是超时了

string userName = "-";
string password = "-";
string clientId = "ee13c922-bf4b-4f0a-ba39-ea74e1203c6e";
var credentials = new UserPasswordCredential(userName, password);
var authenticationContext = new AuthenticationContext("https://login.microsoftonline.com/acostaonline.onmicrosoft.com");
var result = await authenticationContext.AcquireTokenAsync("https://graph.windows.net", clientId, credentials);

错误

  

SocketException:连接尝试失败,因为已连接   一段时间后未正确响应,或已建立   连接失败,因为连接的主机无法响应   172.26.200.77:443

1 个答案:

答案 0 :(得分:0)

您提供的代码似乎是使用ADAL而不是MSAL。

主要区别在于,对于ADAL,您将使用AuthenticationContext来获取令牌,而在MSAL中,您将使用ConfidentialClientApplicationPublicClientApplication,具体取决于如果应用程序在后端或用户设备上运行。

这是关于Differences between ADAL.NET and MSAL.NET applications的文章。

使用MSAL.Net获取Microsoft Graph API的令牌时,可以使用以下代码:

public static PublicClientApplication PublicClientApp = new 
PublicClientApplication(ClientId);
var app = App.PublicClientApp;
ResultText.Text = string.Empty;
TokenInfoText.Text = string.Empty;
var accounts = await app.GetAccountsAsync();
authResult = await app.AcquireTokenSilentAsync(_scopes, accounts.FirstOrDefault());

有关更多详细信息,您可以参考此article,在左侧菜单中还包括AndroidiOS