【问题标题】:How to generate access token for user in AZURE AD B2C using AzureADGraph or Microsoft Graph?如何使用 AzureADGraph 或 Microsoft Graph 为 AZURE AD B2C 中的用户生成访问令牌?
【发布时间】:2018-09-11 07:36:08
【问题描述】:

有没有办法使用 AZURE AD GRAPH 客户端或 MICROSOFT Graph 客户端生成用户的访问令牌? 我有用户名和密码、客户端 ID、策略名称。使用所有这些参数。我要生成令牌。

谢谢!

【问题讨论】:

  • 你的意思是只是用访问令牌来初始化图形客户端。如是。您可以使用以下代码来初始化 Microsoft 图形客户端。 var graphserviceClient = new GraphServiceClient( new DelegateAuthenticationProvider( requestMessage => { requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken); return Task.FromResult(0); }));
  • 我的意思是使用图形客户端生成一个访问令牌(承载令牌),如果我传递用户名和密码。
  • 我已经编辑了@TomSun 的问题。请检查。

标签: azure azure-active-directory microsoft-graph-api azure-ad-b2c azure-ad-graph-api


【解决方案1】:

我们可以这样做,但不建议使用用户名和密码来这样做。

通常,Microsoft 不建议客户使用它,因为它的安全性低于其他流程,并且与条件访问不兼容(如果资源需要条件访问,则对 AcquireTokenSilent 的调用将失败,因为这是不是交互式流程,STS 没有机会向用户显示一个对话框来告诉他/她需要进行多因素身份验证)。

演示代码。

var graphResourceId = "https://graph.windows.net";
var clientId = "afa0b3fxxxxx";
var userName= "xxxxx";
var password = "xxx";
var result = await authenticationContext.AcquireTokenAsync(graphResourceId, clientId, new UserPasswordCredential(userName, password));
var accessToken = result.AccessToken

更多信息,请参考这个document

更新:

获取刷新令牌。

网址:

post https://login.microsoftonline.com/{tenantId}/oauth2/token

标题:

Content-Type: application/x-www-form-urlencoded

身体

resource=https%3A%2F%2Fgraph.windows.net&client_id=xxxxx&grant_type=password&username=tom%40xxxx.onmicrosoft.com&password=xxxxx&scope=openid 

测试结果:

【讨论】:

  • 我看到这个错误请求正文必须包含以下参数:'client_secret or client_assertion'。
  • 我们是否有示例代码向我们展示了所有要完成的步骤?
  • 你能看看@TomSun吗?
  • 您需要使用天蓝色的 AD 原生应用程序
  • 正如您提到的,SDK 没有返回刷新令牌。如果我们想获取刷新令牌,我们可以直接调用rest api。我会更新答案。
猜你喜欢
  • 2023-03-13
  • 2021-01-22
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 2018-03-02
相关资源
最近更新 更多