我们可以在不使用SAS令牌的情况下通过c#代码调用Azure API管理吗

我们可以在不使用SAS令牌的情况下通过c#代码调用Azure API管理吗,c#,.net,azure,oauth-2.0,jwt,C#,.net,Azure,Oauth 2.0,Jwt,我已经通过门户在APIM实例中配置了oauth2.0身份验证 我还为APIM实例创建了AAD条目 我能够通过APIM开发者遗留门户生成jwt承载令牌 但我如何生成JWT令牌来从C#应用程序调用APIM方法呢 我想调用APIM方法 使用来自C#应用程序的OAUTH2.0 JWT令牌 我该怎么做呢 如果有样品,请提供。您需要首先执行以下步骤: 1) 在azure ad中创建应用程序 2) 转到APIM=>Access control(IAM)选项卡 3) 在上面添加创建的应用程序(在APIM中执行此

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

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

我能够通过APIM开发者遗留门户生成jwt承载令牌

但我如何生成JWT令牌来从C#应用程序调用APIM方法呢

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

我该怎么做呢


如果有样品,请提供。

您需要首先执行以下步骤:

1) 在azure ad中创建应用程序 2) 转到APIM=>Access control(IAM)选项卡 3) 在上面添加创建的应用程序(在APIM中执行此操作需要权限) 4) 现在,您应该能够在APIM访问控制(IAM)选项卡中看到Azure AD应用程序

然后,您应该能够使用客户端id和客户端密码从Azure广告中获取访问令牌

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;
}}
公共类myServiceCredentials:ServiceClientCredentials{
私有字符串身份验证令牌{get;set;}
公共覆盖无效初始化ServiceClient(ServiceClient客户端)
{
var authenticationContext=新的authenticationContext(“https://login.windows.net/{tenantID}”);
var-credential=newclientcredential(clientId:“xxxxx-xxxx-xx-xxxx-xxx”,clientSecret:{clientSecret});
var result=authenticationContext.AcquireToken(资源):https://management.core.windows.net/“,客户端凭据:凭据);
如果(结果==null)
{
抛出新的InvalidOperationException(“未能获取JWT令牌”);
}
AuthenticationToken=result.AccessToken;
}}

您首先需要执行以下步骤:

1) 在azure ad中创建应用程序 2) 转到APIM=>Access control(IAM)选项卡 3) 在上面添加创建的应用程序(在APIM中执行此操作需要权限) 4) 现在,您应该能够在APIM访问控制(IAM)选项卡中看到Azure AD应用程序

然后,您应该能够使用客户端id和客户端密码从Azure广告中获取访问令牌

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;
}}
公共类myServiceCredentials:ServiceClientCredentials{
私有字符串身份验证令牌{get;set;}
公共覆盖无效初始化ServiceClient(ServiceClient客户端)
{
var authenticationContext=新的authenticationContext(“https://login.windows.net/{tenantID}”);
var-credential=newclientcredential(clientId:“xxxxx-xxxx-xx-xxxx-xxx”,clientSecret:{clientSecret});
var result=authenticationContext.AcquireToken(资源):https://management.core.windows.net/“,客户端凭据:凭据);
如果(结果==null)
{
抛出新的InvalidOperationException(“未能获取JWT令牌”);
}
AuthenticationToken=result.AccessToken;
}}

谢谢您的回复。我现在用上面的代码获取jwt令牌,但抛出401未经授权的问题。我们需要在APIM的入站策略中使用什么值。早些时候,我使用我已经为apim创建了一个新的应用程序广告,并在上述代码中使用了客户端id和密码。我还在apim中的访问控制(IAM)下添加了新的应用程序广告。还有什么我需要在APIM中配置的吗?我需要在APIM实例中配置OAUTH2.0吗?验证JWT策略值应该是什么?我认为最好的选择是参考文档,因为这将取决于您的方法(如果您使用JWT令牌通过查询字符串或通标头),以及您需要考虑的其他选项。请查看此链接,如果您有任何问题,请告诉我-谢谢您的回复。我现在用上面的代码获取jwt令牌,但抛出401未经授权的问题。我们需要在APIM的入站策略中使用什么值。早些时候,我使用我已经为apim创建了一个新的应用程序广告,并在上述代码中使用了客户端id和密码。我还在apim中的访问控制(IAM)下添加了新的应用程序广告。还有什么我需要在APIM中配置的吗?我需要在APIM实例中配置OAUTH2.0吗?验证JWT策略值应该是什么?我认为最好的选择是参考文档,因为这将取决于您的方法(如果您使用JWT令牌通过查询字符串或通标头),以及您需要考虑的其他选项。请查看此链接,如果您有任何问题,请告诉我-