Technology: Windows 10 Apps, Azure AD, WAM
Required Name Spaces:
Required Name Spaces:
using System;
using System.Linq;
using System.Threading.Tasks;
using Windows.Security.Authentication.Web;
using Windows.Security.Authentication.Web.Core;
using Windows.Security.Credentials;
public static string AdalClientId = App.clintID; //clientID from Azure AD
public static string AdalResourceId = App.ServiceResourceUrl; // Web api Service appID from Azure AD
const string MicrosoftAccountProviderId = "https://login.microsoft.com";
public string AdalIssuerAuthority = "https://login.windows.net/contoso.onmicrosoft.com";
string URI = string.Format("ms-appx-web://Microsoft.AAD.BrokerPlugIn/{0}", WebAuthenticationBroker.GetCurrentApplicationCallbackUri().Host.ToUpper()); //URI need to enter while registering into Azure AD
string szReturnUri = WebAuthenticationBroker.GetCurrentApplicationCallbackUri().AbsoluteUri;
AuthenticationResult AResult;
public async Task<string> Authenticate(bool prompt)
{
WebAccountProvider provider = await WebAuthenticationCoreManager.FindAccountProviderAsync(MicrosoftAccountProviderId, AdalIssuerAuthority);
try
{
WebTokenRequest webTokenRequest = new WebTokenRequest(provider, "", AdalClientId);
// webTokenRequest.Properties.Add("resource", "https://graph.windows.net");
webTokenRequest.Properties.Add("resource", App.ServiceResourceUrl);
// If the user selected a specific account, RequestTokenAsync will return a token for that account.
// The user may be prompted for credentials or to authorize using that account with your app
// If the user selected a provider, the user will be prompted for credentials to login to a new account
WebTokenRequestResult webTokenRequestResult;
if (prompt)
{
webTokenRequestResult = await WebAuthenticationCoreManager.RequestTokenAsync(webTokenRequest);
////result = await context.AcquireTokenAsync(AdalResourceId, AdalClientId, _returnUri, PromptBehavior.Auto, objUserIdtfr, "domain_hint=microsoft.com");
}
else
{
webTokenRequestResult = await WebAuthenticationCoreManager.GetTokenSilentlyAsync(webTokenRequest);
}
// If a token was successfully returned, then store the WebAccount Id into local app data
// This Id can be used to retrieve the account whenever needed. To later get a token with that account
// First retrieve the account with FindAccountAsync, and include that webaccount
// as a parameter to RequestTokenAsync or RequestTokenSilentlyAsync
if (webTokenRequestResult.ResponseStatus == WebTokenRequestStatus.Success)
{
App.AccessToken = webTokenRequestResult.ResponseData[0].Token;
string szUserinfo = webTokenRequestResult.ResponseData[0].WebAccount.UserName;
if (!szUserinfo.ToLower().Contains("microsoft.com"))
{
await Utils.ShowPopUp("Not a valid user. App now exits");
Windows.UI.Xaml.Application.Current.Exit();
}
if (!string.IsNullOrEmpty(szUserinfo) && szUserinfo.Contains("@")) //TODO: This is not always alias, for some users emailid and alias is differnt
App.szUserAlias = szUserinfo.Split('@').First();
App.szUserName = App.szUserAlias;
}
No comments:
Post a Comment