我需要调用Microsoft Graph API在Azure AD中创建用户。
首先,我需要从控制台应用程序进行测试,然后需要在Azure中实现功能。
https://developer.microsoft.com/en-us/graph/graph-explorer
我是微软图形API的新手,我如何从C#控制台应用程序连接和执行API。
我已经在AAD中注册了该应用程序。
我正在尝试以以下身份获取令牌:
string resourceId = "https://graph.microsoft.com";
string tenantId = "<tenantID>";
string authString = "https://login.microsoftonline.com/" + tenantId;
string upn = String.Empty;
string clientId = "<ClientID>";
string clientSecret = "<clientSecret>";
//string clientSecret = ConfigurationManager.AppSettings["clientSecret"];
log.Verbose("ClientSecret=" + clientSecret);
log.Verbose("authString=" + authString);
var authenticationContext = new AuthenticationContext(authString, false);
// Config for OAuth client credentials
ClientCredential clientCred = new ClientCredential(clientId, clientSecret);
AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(resourceId,clientCred);
string token = authenticationResult.AccessToken;
log.Verbose("token=" + token);
我尝试使用现有的AADB 2C. b2c-extensions-app。请勿修改。AADB 2C使用它来储存使用者数据。
我已将权限启用为:
我既没有获得异常也没有获得访问令牌,程序以静默方式退出
还有:
有新的库
<package id="Microsoft.Identity.Client" version="1.1.0-preview" targetFramework="net46" />
我如何直接登录而不弹出登录窗口,并获得令牌以下?PublicClientApplication
4条答案
按热度按时间dojqjjoe1#
我假设您已经拥有Azure AD应用程序并获得了管理许可。
若要从主机应用程序连接,您需要先获取有效的令牌。由于您缺少UI,您需要在没有用户的情况下获取访问权限。请注意,这种“仅限应用程序”令牌需要管理员同意才能使用。
然后,必须向
dotnet
项目添加两个NuGet
依赖项Microsoft.Identity.Client
用于使用Azure AD进行身份验证,Microsoft.Graph
用于执行MS Graph查询。更新2020.01
有一个新的包
Microsoft.Graph.Auth
,它简化了身份验证和令牌管理。假设这次您要使用一些Beta API。
第一次
iaqfqrcu2#
若要从主机应用连接,您需要首先获取有效令牌。由于您缺少UI,因此需要Get access without a user。* 请注意,此类型的“仅限应用”令牌需要Administrative Consent才能使用。*
为了支持Create User方案,您需要确保您的permission scopes包含User. ReadWrite. All。
一旦你有了一个有效的令牌,你就可以调用Graph API。Graph是一个REST API,所以所有的调用都是通过HTTP进行的,令牌在授权头中传递。
你可以在Get started with Microsoft Graph and REST上阅读一个概述。也有一些语言/框架的概述,但它们都假设你有一个UI(即不仅仅是控制台)。一般来说,如果你正在寻找一个控制台工具来创建用户,你可能更喜欢使用PowerShell。
wgeznvg73#
这个问题已经很老了,但当我需要做同样的事情时,它是第一个蹦出来的问题之一。下面我将记录我用来实现它的步骤和资源:
1.我使用了O365租户(您可以从www.example.com获得一个租户office.com-请注意,您可以获得一年的开发人员试用版)。一旦您拥有了租户,如果您以租户管理员用户身份登录,则还可以访问Azure门户。在Azure门户下,转到Active Directory/属性以查看租户ID。
1.我按照这里的说明https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-netcore-daemon创建了一个新的注册应用程序。我创建了一个新的机密并复制了该值(这将是您的控制台应用程序中的客户端机密)。注册的应用程序ID将是您的控制台应用程序中的客户端ID。
1.我克隆了上述链接中的github repo,并将appsettings中的值更改为上述步骤中提到的租户ID、客户端ID和客户端机密。
1.该存储库中的代码调用了一些方法,这些方法在.NETCore 2.1的ConfigurationBuilder中已不存在。我用以下代码行替换了这些代码行(可能有更好/更短的方法):
如果您有任何问题,请使用下面的方法进行解答:客户端ID =配置.获取部分(“客户端ID”).值.ToString();客户端密码是客户端密码的一部分,客户端密码是客户端密码的一部分。
1.你现在应该在你的租户中迭代用户了。你可以去图形资源管理器(https://developer.microsoft.com/en-us/graph/graph-explorer)找到更多的URL(在Program.cs中找到行来替换它们)。据我所知,API的v2.0是“beta”(把“beta”放在“v1.0”的地方-如果我说错了,请有人纠正我)。
如果您有任何问题,请与我们联系。
wbrvyc0a4#
此MSAL console app tutorial说明如何在.NET控制台应用程序中使用MSAL(Microsoft身份验证库)获取令牌。
为了调用Microsoft Graph,我用以下代码替换了RunAsync()函数,它将获取的令牌附加到GraphServiceClient的请求中: