我们可以在不使用 SAS 令牌的情况下通过 c# 代码调用 Azure API 管理吗
Posted
技术标签:
【中文标题】我们可以在不使用 SAS 令牌的情况下通过 c# 代码调用 Azure API 管理吗【英文标题】:Can we call Azure API Management through c# code without using SAS Token 【发布时间】:2020-06-05 05:12:24 【问题描述】:我已经通过门户在 APIM 实例中配置了 oauth2.0 身份验证。
我还为 APIM 实例创建 AAD 条目。
我也可以通过 APIM 开发者遗留门户生成 jwt 不记名令牌。
但是如何生成 JWT 令牌以从 C# 应用程序调用 APIM 方法。
我想调用 APIM 方法 使用来自 C# 应用程序的 OAUTH2.0 JWT 令牌。
我该怎么做。
如有样品,请提供。
【问题讨论】:
【参考方案1】:您需要先执行以下步骤:
1) 在 azure ad 中创建应用程序 2) 转到您的 APIM => 访问控制 (IAM) 选项卡 3)添加上面创建的应用程序(需要在APIM中执行此操作) 4) 现在您应该能够在 APIM 访问控制 (IAM) 选项卡中看到 Azure AD 应用程序
然后您应该能够使用客户端 ID 和客户端密码从 Azure AD 获取访问令牌
public class myServiceCredentials : ServiceClientCredentials
private string AuthenticationToken get; set;
public override void InitializeServiceClient<T>(ServiceClient<T> client)
var authenticationContext = new AuthenticationContext("https://login.windows.net/tenantID");
var credential = new ClientCredential(clientId: "xxxxx-xxxx-xx-xxxx-xxx", clientSecret: "clientSecret");
var result = authenticationContext.AcquireToken(resource: "https://management.core.windows.net/", clientCredential: credential);
if (result == null)
throw new InvalidOperationException("Failed to obtain the JWT token");
AuthenticationToken = result.AccessToken;
【讨论】:
感谢您的回复。我现在使用上面的代码获取 jwt 令牌,但抛出 401 未经授权的问题。我们需要在 APIM 的入站策略中为以上是关于我们可以在不使用 SAS 令牌的情况下通过 c# 代码调用 Azure API 管理吗的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SAS 令牌从 C# 连接到 Azure BlobStorage?
我可以在不注册我的自动测试应用程序的情况下在 Azure 上获取访问令牌吗?
如何在不实际安装连接器的情况下通过 C# 使用 mysql 连接器连接到 mysql
解析 JWT 令牌以仅在 C# 或 Blazor 中没有外部库的情况下获取有效负载内容