我创建了一个MVC应用程序,用于将工作升级到组织内的其他人。我已将我组织中的所有成员添加到AAD, 并在那里注册了一个应用程序,创建了应用程序服务并将该应用程序服务链接到已启用SSO的已注册应用程序。
现在,每当有人访问该应用时,他们都可以使用各自的凭据成功登录。
我想知道的是检索我的AAD中的所有成员并将其显示在下拉列表中,以便任何人只需查看下拉列表就可以升级到其他成员。
我尝试使用示例图SDK来获取组织中的用户名 使用此代码
private string redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"];
private string appId = ConfigurationManager.AppSettings["ida:AppId"];
private string appSecret = ConfigurationManager.AppSettings["ida:AppSecret"];
private string scopes = ConfigurationManager.AppSettings["ida:GraphScopes"];
public async Task<string> GetUserAccessTokenAsync()
{
string signedInUserID = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
HttpContextWrapper httpContext = new HttpContextWrapper(HttpContext.Current);
TokenCache userTokenCache = new SessionTokenCache(signedInUserID, httpContext).GetMsalCacheInstance();
//var cachedItems = tokenCache.ReadItems(appId); // see what's in the cache
ConfidentialClientApplication cca = new ConfidentialClientApplication(
appId,
redirectUri,
new ClientCredential(appSecret),
userTokenCache,
null);
try
{
AuthenticationResult result = await cca.AcquireTokenSilentAsync(scopes.Split(new char[] { ' ' }), cca.Users.First());
return result.AccessToken;
}
// Unable to retrieve the access token silently.
catch (Exception)
{
HttpContext.Current.Request.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties() { RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
throw new ServiceException(
new Error
{
Code = GraphErrorCode.AuthenticationFailure.ToString(),
Message = Resource.Error_AuthChallengeNeeded,
});
}
}
范围有一些变化。
<add key="ida:AppId" value="xxxxx-xxxxxxx-xxxxxx-xxxxxxx"/>
<add key="ida:AppSecret" value="xxxxxxxxxxx"/>
<add key="ida:RedirectUri" value="http://localhost:55065/"/>
<add key="ida:GraphScopes" value="User.ReadBasic.All User.Read Mail.Send Files.ReadWrite"/>
这使我能够获得组织中所有用户的基本详细信息。 但是我如何在我的应用程序中实现这一点,其中认证相关的东西仅在azure中完成,并且在整个解决方案中没有用于认证和授权的代码。
由于
Subham,NATHCORP,印度
答案 0 :(得分:0)
但是我如何在我的应用程序中实现这一点,其中认证相关的东西仅在azure中完成,并且在整个解决方案中没有用于认证和授权的代码。
根据我的理解,您使用的是内置功能App Service Authentication / Authorization。您可以按here配置您的网络应用以使用AAD登录。您需要按如下方式为AD应用程序配置所需的权限:
注意:对于Azure AD图,您需要为 Windows Azure Active Directory API设置相关权限。对于Microsoft Graph,您需要配置 Microsoft Graph API。
然后,您需要为您的网络应用配置其他设置。您可以访问https://resources.azure.com/,选择您的网络应用并更新App Service Auth Configuration,如下所示:
注意:要使用Microsoft Graph API,您需要将df['A'].tolist()
设置为resource
。详细信息,您可以关注here。
要在应用程序中检索访问令牌,您可以从请求标头https://graph.microsoft.com
中获取它。详细信息,您可以关注Working with user identities in your application。
此外,您可以使用Microsoft.Azure.ActiveDirectory.GraphClient包用于Microsoft Azure Active Directory图谱API,使用相关访问令牌的Microsoft Graph API Microsoft.Graph包。