Windows Windows 10 个通用应用程序的集成身份验证
Windows Integrated Authentication on Windows 10 Universal Applications
我们正在将通用 Windows 8 应用程序作为一个新项目移植到 Windows 10,到目前为止,我已经能够设置身份验证并与 Office 365 一起工作和交互API。
在 Windows 8 中,我的同事能够使用 UseCorporateNetwork 属性 为身份验证上下文设置 Windows 集成身份验证。由于我使用的是 WebAccountProvider 而不是 WebAuthenticationBroker,因此我无法找到执行此操作的方法。
谁能指出我在 Windows 10 通用应用程序上实施 Windows 集成身份验证的正确方向?
这是 link 来自 Windows 8 的 AuthenticationHelper 示例:
(UseCorporateNetwork 在我们的版本中将被取消注释)。
https://github.com/chakkaradeep/O365UniversalApp/blob/0ff04169e57ed365c78a85c1cb480cc90fa5b6b0/O365UniversalApp/O365UniversalApp.Windows/AuthenticationHelper.cs
这是 link 来自 Windows 10 的 AuthenticationHelper 示例:
https://github.com/icebeam7/walker/blob/55861001816db49f59a66a93951459f12d14ad51/Walker/AuthenticationHelper.cs
发现您可以更改 GetTokenHelperAsync 方法来执行此操作。这是代码:
// Get an access token for the given context and resourceId. An attempt is first made to
// acquire the token silently. If that fails, then we try to acquire the token by prompting the user.
public static async Task<string> GetTokenHelperAsync(string resource)
{
string token = "";
aadAccountProvider = await WebAuthenticationCoreManager.FindAccountProviderAsync("https://login.microsoft.com", authority);
// Get Microsoft Web Account Manager Provider
var provider = await WebAuthenticationCoreManager.FindAccountProviderAsync("https://login.microsoft.com", authority);
// Request result token to Web Account Manager
WebTokenRequest webTokenRequest = new WebTokenRequest(provider, "", clientId);
webTokenRequest.Properties.Add("resource", resource);
WebTokenRequestResult webTokenResult = await WebAuthenticationCoreManager.RequestTokenAsync(webTokenRequest);
// Show access token
if (webTokenResult.ResponseStatus == WebTokenRequestStatus.Success)
{
WebTokenResponse webTokenResponse = webTokenResult.ResponseData[0];
userAccount = webTokenResponse.WebAccount;
token = webTokenResponse.Token;
}
if (userAccount != null)
{
// Save user ID in local storage.
_settings.Values["userID"] = userAccount.Id;
_settings.Values["userEmail"] = userAccount.UserName;
_settings.Values["userName"] = userAccount.Properties["DisplayName"];
}
else
{
SignOut();
return null;
}
return token;
}`
我们正在将通用 Windows 8 应用程序作为一个新项目移植到 Windows 10,到目前为止,我已经能够设置身份验证并与 Office 365 一起工作和交互API。
在 Windows 8 中,我的同事能够使用 UseCorporateNetwork 属性 为身份验证上下文设置 Windows 集成身份验证。由于我使用的是 WebAccountProvider 而不是 WebAuthenticationBroker,因此我无法找到执行此操作的方法。
谁能指出我在 Windows 10 通用应用程序上实施 Windows 集成身份验证的正确方向?
这是 link 来自 Windows 8 的 AuthenticationHelper 示例: (UseCorporateNetwork 在我们的版本中将被取消注释)。 https://github.com/chakkaradeep/O365UniversalApp/blob/0ff04169e57ed365c78a85c1cb480cc90fa5b6b0/O365UniversalApp/O365UniversalApp.Windows/AuthenticationHelper.cs
这是 link 来自 Windows 10 的 AuthenticationHelper 示例: https://github.com/icebeam7/walker/blob/55861001816db49f59a66a93951459f12d14ad51/Walker/AuthenticationHelper.cs
发现您可以更改 GetTokenHelperAsync 方法来执行此操作。这是代码:
// Get an access token for the given context and resourceId. An attempt is first made to
// acquire the token silently. If that fails, then we try to acquire the token by prompting the user.
public static async Task<string> GetTokenHelperAsync(string resource)
{
string token = "";
aadAccountProvider = await WebAuthenticationCoreManager.FindAccountProviderAsync("https://login.microsoft.com", authority);
// Get Microsoft Web Account Manager Provider
var provider = await WebAuthenticationCoreManager.FindAccountProviderAsync("https://login.microsoft.com", authority);
// Request result token to Web Account Manager
WebTokenRequest webTokenRequest = new WebTokenRequest(provider, "", clientId);
webTokenRequest.Properties.Add("resource", resource);
WebTokenRequestResult webTokenResult = await WebAuthenticationCoreManager.RequestTokenAsync(webTokenRequest);
// Show access token
if (webTokenResult.ResponseStatus == WebTokenRequestStatus.Success)
{
WebTokenResponse webTokenResponse = webTokenResult.ResponseData[0];
userAccount = webTokenResponse.WebAccount;
token = webTokenResponse.Token;
}
if (userAccount != null)
{
// Save user ID in local storage.
_settings.Values["userID"] = userAccount.Id;
_settings.Values["userEmail"] = userAccount.UserName;
_settings.Values["userName"] = userAccount.Properties["DisplayName"];
}
else
{
SignOut();
return null;
}
return token;
}`