Asp.net core mvc 如何在asp net core mvc应用程序中从my Azure AD B2C获取用户列表?
如何在asp net core mvc应用程序中从my Azure AD B2C获取用户列表?请参考Azure Graph API 从文件中: Azure Active Directory图形API通过REST API端点提供对Azure AD的编程访问。应用程序可以使用Azure AD Graph API对目录数据和对象执行创建、读取、更新和删除(CRUD)操作。例如,Azure AD Graph API支持用户对象的以下常见操作:Asp.net core mvc 如何在asp net core mvc应用程序中从my Azure AD B2C获取用户列表?,asp.net-core-mvc,azure-ad-b2c,azure-ad-graph-api,Asp.net Core Mvc,Azure Ad B2c,Azure Ad Graph Api,如何在asp net core mvc应用程序中从my Azure AD B2C获取用户列表?请参考Azure Graph API 从文件中: Azure Active Directory图形API通过REST API端点提供对Azure AD的编程访问。应用程序可以使用Azure AD Graph API对目录数据和对象执行创建、读取、更新和删除(CRUD)操作。例如,Azure AD Graph API支持用户对象的以下常见操作: 在目录中创建新用户 获取用户的详细属性,例如用户的组 更新
- 在目录中创建新用户
- 获取用户的详细属性,例如用户的组
- 更新用户的属性,例如其位置和电话号码,或更改其密码
- 检查用户的组成员资格以获得基于角色的访问权限
- 禁用用户帐户或将其完全删除
您可以使用Azure Graph API获取所有用户。在.net core控制台应用程序中尝试以下代码:
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Text;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
var tenantID = "<your tenant ID>";
var clinetID = "<your app id>";
var client_secret = "<your app password>";
HttpClient client = new HttpClient();
//get access token from Azure AD
var reqContent = @"grant_type=client_credentials&resource=https://graph.microsoft.com&client_id="+ clinetID + "&client_secret="+ System.Web.HttpUtility.UrlEncode(client_secret);
var Content = new StringContent(reqContent, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = client.PostAsync("https://login.microsoftonline.com/"+ tenantID + "/oauth2/token", Content).Result;
var token = JsonConvert.DeserializeObject<TokenResult>(response.Content.ReadAsStringAsync().Result);
//Use access token to call microsoft graph api
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token.access_token);
Console.WriteLine(client.GetAsync("https://graph.microsoft.com/v1.0/users").Result.Content.ReadAsStringAsync().Result);
Console.ReadKey();
}
}
class TokenResult
{
public string token_type { get; set; }
public string expires_in { get; set; }
public string ext_expires_in { get; set; }
public string expires_on { get; set; }
public string not_before { get; set; }
public string resource { get; set; }
public string access_token { get; set; }
}
}
使用Newtonsoft.Json;
使用制度;
使用System.Net.Http;
使用系统文本;
名称空间控制台App6
{
班级计划
{
静态void Main(字符串[]参数)
{
var tenantID=“”;
var clinetID=“”;
var client_secret=“”;
HttpClient=新的HttpClient();
//从Azure AD获取访问令牌
var reqContent=@“授权类型=客户端凭据和资源”=https://graph.microsoft.com&client_id=“+clinetID+”&client_secret=“+System.Web.HttpUtility.UrlEncode(client_secret);
var Content=新的StringContent(reqContent,Encoding.UTF8,“application/x-www-form-urlencoded”);
var response=client.PostAsync(“https://login.microsoftonline.com/“+tenantID+”/oauth2/token”,内容)。结果;
var token=JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result);
//使用访问令牌调用microsoft graph api
client.DefaultRequestHeaders.Add(“授权”、“承载人”+令牌.access_令牌);
Console.WriteLine(client.GetAsync(“https://graph.microsoft.com/v1.0/users).Result.Content.ReadAsStringAsync().Result);
Console.ReadKey();
}
}
类标记结果
{
公共字符串标记\u类型{get;set;}
{get;set;}中的公共字符串过期
{get;set;}中的公共字符串ext_expires_
公共字符串在{get;set;}上过期
公共字符串不在{get;set;}之前
公共字符串资源{get;set;}
公共字符串访问\u令牌{get;set;}
}
}
要运行此代码,您应该在B2C租户中注册一个应用程序,并向其授予读取用户权限:
Azure Active Directory=>应用程序注册(旧版)=>新应用程序注册:
记下应用程序id并为应用程序创建密码并记下:
将clinetID
的值替换为app id,并将client\u secret
的值替换为密码
授予应用程序的“读取用户”权限:
为应用程序选择权限后,单击“授予权限”按钮。
如果您有任何进一步的问题,请随时告诉我。Hi@stanley gongyes,非常感谢,这很有帮助。还有其他问题吗。如何在用户处获取IdentityProvider名称?此外,由于某些原因,用户回复中没有他的邮件和其他属性?当然可以,您好@侧码,但您能否尽可能详细地发布另一个问题?一旦我看到,我将在第一时间为您提供帮助。祝您有个美好的一天!