![](/img/trans.png)
[英]Unable to resolve Nuget package Microsoft.Graph.Auth issue in C# Active Directory console app
[英]C# Console App to Create User in Azure Active Directory using Microsoft Graph
如何使用Microsoft Graph在Azure AD中創建用戶而無需登錄(從控制台/服務)?
它接縫了所有示例,因此您必須先使用AD帳戶登錄。
有了這個我得到拒絕訪問。
class Program {
static void Main (string[] args) {
Create ().Wait ();
Console.ReadLine ();
}
private static async Task Create () {
var graph = new GraphServiceClient (new AzureAuthenticationProvider ());
try {
var users = await graph.Users.Request ().GetAsync ();
int requestNumber = 1;
while (users.Count > 0) {
Console.WriteLine ("Request number: {0}", requestNumber++);
foreach (var u in users) {
Console.WriteLine ("User: {0} ({1})", u.DisplayName,
u.UserPrincipalName);
}
if (users.NextPageRequest != null) {
users = await users.NextPageRequest.GetAsync ();
} else {
break;
}
}
} catch (ServiceException x) {
Console.WriteLine ("Exception occured: {0}", x.Error);
}
}
}
public class AzureAuthenticationProvider : IAuthenticationProvider {
public async Task AuthenticateRequestAsync (HttpRequestMessage request) {
string clientId = "IDHERE";
string clientSecret = "SECRETHERE";
string tenantName = "somedomain.com";
string authString = "https://login.microsoftonline.com/" + tenantName;
AuthenticationContext authContext = new AuthenticationContext (authString, false);
ClientCredential creds = new ClientCredential (clientId, clientSecret);
AuthenticationResult authResult = await authContext.AcquireTokenAsync ("https://graph.microsoft.com/", creds);
request.Headers.Add ("Authorization", "Bearer " + authResult.AccessToken);
}
}
OK,就在這里! 我花了半天的時間弄清楚了,現在可以了。
轉到Azure門戶-> AD部分->注冊新應用(Web應用/ API),創建新密鑰並保存。
所需權限:
然后從“必需的權限”邊欄選項卡中,單擊靠近+添加按鈕的頂部菜單中的“授予權限”。
然后代碼是這樣的:
class Program
{
static void Main(string[] args)
{
Create().Wait();
Console.ReadLine();
}
private static async Task Create()
{
var graph = new GraphServiceClient(new AzureAuthenticationProvider());
try
{
var users = await graph.Users.Request().GetAsync();
int requestNumber = 1;
while (users.Count > 0)
{
Console.WriteLine("Request number: {0}", requestNumber++);
foreach (var u in users)
{
Console.WriteLine("User: {0} ({1})", u.DisplayName,
u.UserPrincipalName);
}
if (users.NextPageRequest != null)
{
users = await users.NextPageRequest.GetAsync();
}
else
{
break;
}
}
}
catch (ServiceException x)
{
Console.WriteLine("Exception occured: {0}", x.Error);
}
}
}
internal class AppModeConstants
{
public const string ClientId = "YOUR_CLIENT_ID_HERE";
public const string ClientSecret = "YOUR_SECRET_HERE";
public const string TenantName = "YOUR_TENANT_NAME_HERE"; //somedomain.com
public const string TenantId = "YOUR_TENANT_ID_HERE";
public const string AuthString = GlobalConstants.AuthString + TenantName;
}
internal class GlobalConstants
{
public const string AuthString = "https://login.microsoftonline.com/";
public const string ResourceUrl = "https://graph.microsoft.com";
public const string GraphServiceObjectId = "00000002-0000-0000-c000-000000000000";
}
public class AzureAuthenticationProvider : IAuthenticationProvider
{
public async Task AuthenticateRequestAsync(HttpRequestMessage request)
{
AuthenticationContext authContext = new AuthenticationContext(AppModeConstants.AuthString,false);
ClientCredential creds = new ClientCredential(AppModeConstants.ClientId, AppModeConstants.ClientSecret);
AuthenticationResult authResult = await authContext.AcquireTokenAsync(GlobalConstants.ResourceUrl,creds);
request.Headers.Add("Authorization", "Bearer " + authResult.AccessToken);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.