首页 > 解决方案 > 可以在 Razor 中没有 MS 库的情况下代表用户获取访问令牌吗?

问题描述

我正在编写一个 Razor 页面应用程序,它以 HTTP GET 调用的形式获取 Azure AD 中的用户数据。

但是,我发现的大多数文档都说使用 MS GRAPH 库——有没有办法只使用标准 HTTP 代表用户获取访问令牌?

我不确定如何从我的剃须刀页面应用程序中获得登录 Office365 的提示。

标签: c#azurerazorgraph

解决方案


您可以使用auth code flow获得访问令牌。

在浏览器中获取授权码:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={client-id}
&response_type=code
&redirect_uri={redirect_uri in azure portal}
&response_mode=query
&scope=https://graph.microsoft.com/.default
&state=12345

使用前面的代码获取访问令牌:

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token

client_id={client-id}
&scope=https://graph.microsoft.com/.default
&code={code from previous step}
&redirect_uri={redirect_uri in azure portal}
&grant_type=authorization_code

解码访问令牌后,您将获得upn(用户的用户名)和其他人。如果您拥有 MS Graph 所需的权限,您还可以通过 API 获取用户的详细信息。


推荐阅读