在框架 .net 环境中从 Microsoft Graph 中检索记录的用户信息
Retrieve logged user info from microsoft graph in a framework .net environment
我需要在 .net 框架 Web 应用程序环境中实施 SSO。需要验证和检索登录用户的 samaccountname。
我有一个工作代码,但只能在桌面和移动设备环境中工作,我猜是因为我使用的是“PublicClientApplicationBuilder”。
桌面示例工作代码:
string clientId = "c8a73432-9383-4e7c.....";
string tenantId = "efe4a126-2f4f-42ef.....";
var app = PublicClientApplicationBuilder.Create(clientId)
.WithTenantId(tenantId)
.WithRedirectUri(http://localhost)
.Build();
string[] scopes = new string[]
{
https://graph.microsoft.com/User.Read
};
var result = await app.AcquireTokenInteractive(scopes)
.ExecuteAsync();
var stream = result.IdToken.ToString(); // return IDtoken with samaccountname
有人有适用于网络应用程序的示例代码吗?
我试过使用“ConfidentialClientApplicationBuilder”,但不起作用:
string clientId = "c8a73432-9383...";
string tenantId = "efe4a126-2f4f...";
string secret = "1qN8Q~4m7qD5_...";
string authorityUri = $https://login.microsoftonline.com/efe4e126-2f4f-42ef...;
var app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(secret)
.WithAuthority(new Uri(authorityUri))
.WithRedirectUri(http://localhost)
.Build();
string[] scopes = new string[]
{
https://graph.microsoft.com/User.Read
};
var accessTokenRequest = app.AcquireTokenForClient(scopes);
var accessToken = accessTokenRequest.ExecuteAsync().Result.AccessToken;
提前致谢!
- 列表项
在机密客户端应用程序中,通常每个用户都有一个缓存。因此,您需要获取与用户关联的缓存并通知应用程序构建器您要使用它。同样,您可能有一个动态计算的重定向 URI。
能否添加以下代码,
TokenCache userTokenCache = _tokenCacheProvider.SerializeCache(app.UserTokenCache,httpContext, claimsPrincipal);
请参考文档- .
如果仍然无法正常工作,正如您所说的那样,我们想知道您遇到了什么错误?
我需要在 .net 框架 Web 应用程序环境中实施 SSO。需要验证和检索登录用户的 samaccountname。
我有一个工作代码,但只能在桌面和移动设备环境中工作,我猜是因为我使用的是“PublicClientApplicationBuilder”。
桌面示例工作代码:
string clientId = "c8a73432-9383-4e7c.....";
string tenantId = "efe4a126-2f4f-42ef.....";
var app = PublicClientApplicationBuilder.Create(clientId)
.WithTenantId(tenantId)
.WithRedirectUri(http://localhost)
.Build();
string[] scopes = new string[]
{
https://graph.microsoft.com/User.Read
};
var result = await app.AcquireTokenInteractive(scopes)
.ExecuteAsync();
var stream = result.IdToken.ToString(); // return IDtoken with samaccountname
有人有适用于网络应用程序的示例代码吗?
我试过使用“ConfidentialClientApplicationBuilder”,但不起作用:
string clientId = "c8a73432-9383...";
string tenantId = "efe4a126-2f4f...";
string secret = "1qN8Q~4m7qD5_...";
string authorityUri = $https://login.microsoftonline.com/efe4e126-2f4f-42ef...;
var app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(secret)
.WithAuthority(new Uri(authorityUri))
.WithRedirectUri(http://localhost)
.Build();
string[] scopes = new string[]
{
https://graph.microsoft.com/User.Read
};
var accessTokenRequest = app.AcquireTokenForClient(scopes);
var accessToken = accessTokenRequest.ExecuteAsync().Result.AccessToken;
提前致谢!
- 列表项
在机密客户端应用程序中,通常每个用户都有一个缓存。因此,您需要获取与用户关联的缓存并通知应用程序构建器您要使用它。同样,您可能有一个动态计算的重定向 URI。
能否添加以下代码, TokenCache userTokenCache = _tokenCacheProvider.SerializeCache(app.UserTokenCache,httpContext, claimsPrincipal);
请参考文档-
如果仍然无法正常工作,正如您所说的那样,我们想知道您遇到了什么错误?