如何使用 asp.net mvc 从 azure 获取访问令牌

Posted

技术标签:

【中文标题】如何使用 asp.net mvc 从 azure 获取访问令牌【英文标题】:How to get the access token from azure using asp.net mvc 【发布时间】:2020-10-26 13:52:55 【问题描述】:

我们只是想使用 asp.net MVC Web 应用程序获取 azure 的访问令牌。

我们必须使用下面的代码行来获取 azure 访问令牌。

 Dim authorityUri As String = "https://login.microsoftonline.com/common/oauth2/authorize"

 Dim authContext As AuthenticationContext = New AuthenticationContext(authorityUri)

 Dim TokenTask = Await authContext.AcquireTokenAsync(resource, ClientCredetial)

 Dim getToken = TokenTask.AccessToken()
 Return getToken

但是我们收到了对打开的 azure 登录页面的响应。你能帮我解决这个问题吗?

有没有办法使用asp.net MVC从azure获取令牌所以请提前建议。

【问题讨论】:

没那么简单,there are a number of authentication flows,你需要用哪一个?而且,为什么用 c# 标记? 您能否格式化代码,使其更具可读性?是授权流程显示登录页面,因为它不会在没有用户登录的情况下发出令牌。您需要使用 client_credentials 授权类型。 docs.microsoft.com/en-us/azure/active-directory/develop/… 现在可读性很好。你能帮我使用asp/net MVC直接获取访问令牌吗?或者这是获取令牌的任何其他方式。请提出建议。 嗨,您有机会查看我的答案吗?有更新吗? 【参考方案1】:

看来你要实现client credentials flow。

权限不正确。应该是https://login.microsoftonline.com/tenantId

不确定为什么要添加 C# 标签,但您的代码是 VB。

所以这里有一个 C# 示例供您参考。

 string authority = "https://login.microsoftonline.com/tenantId";
 string clientId = "clientId";
 string secret = "secret";
 string resource = "resource";

 var credential = new ClientCredential(clientId, secret);
 AuthenticationContext authContext = new AuthenticationContext(authority);

 var token = authContext.AcquireTokenAsync(resource, credential).Result.AccessToken;

【讨论】:

以上是关于如何使用 asp.net mvc 从 azure 获取访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

从 GitHub 持续部署在 Azure 中失败(ASP.NET 5 和 MVC 6)

从 asp.net mvc 网站到 azure 认知搜索的连接问题

Azure 云服务上的 Asp.Net Core MVC?

与 Azure Application Insights、ASP.NET MVC 和 NLog 的活动关联

如何将图片存储在 asp.net mvc 应用程序的 azure blob 存储中?

从托管在 Azure 中的 Asp.net Core MVC Web App 获取“响应状态代码不表示成功:502(错误网关)”