【问题标题】:Can we call Azure API Management through c# code without using SAS Token我们可以在不使用 SAS 令牌的情况下通过 c# 代码调用 Azure API 管理吗
【发布时间】:2020-06-05 05:12:24
【问题描述】:

我已经通过门户在 APIM 实例中配置了 oauth2.0 身份验证。

我还为 APIM 实例创建 AAD 条目。

我也可以通过 APIM 开发者遗留门户生成 jwt 不记名令牌。

但是如何生成 JWT 令牌以从 C# 应用程序调用 APIM 方法。

我想调用 APIM 方法 使用来自 C# 应用程序的 OAUTH2.0 JWT 令牌。

我该怎么做。

如有样品,请提供。

【问题讨论】:

    标签: c# .net azure oauth-2.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 的入站策略中为 使用什么值。早些时候,我使用 login.microsoftonline.com... 作为
    • 我为 apim 创建了一个新的应用广告,并在上面的代码中使用了客户端 ID 和密码。我还在 APIM 的访问控制 (IAM) 下添加了新的应用广告。我还需要在 APIM 中配置什么吗?我需要在 APIM 实例中配置 OAUTH2.0 吗? validate-jwt 策略值应该是什么
    • 我认为最好的选择是参考文档,因为这取决于您的方法(如果您通过查询字符串或标头使用 jwt 令牌)以及您需要的其他选项考虑。看看这个链接,如果你有任何问题,请告诉我 - docs.microsoft.com/en-us/azure/api-management/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2021-08-04
    • 2017-11-03
    • 2017-04-30
    • 1970-01-01
    • 2016-09-12
    • 2022-08-05
    相关资源
    最近更新 更多