当前位置: 首页 > 知识库问答 >
问题:

Azure AD ASP. Net Core 2.1的带有无效受众错误的未经授权响应

关玮
2023-03-14

我使用ASP开发了UI和Web API。具有Azure AD身份验证的net Core 2.1。两者都已在Azure应用程序注册中注册。我正在UI中使用以下代码。但我遇到了一个未经授权的错误。

string AZURE_AD_INSTANE = "https://login.microsoftonline.com/";
string TENANT_ID = "<tenant GUID>";
string CLIENT_ID = "<Client GUID ofWeb API>";
string SECRET = "<Secret created for Web API under Certificates & secrets>";
string RESOURCE = "https://MyOrg.onmicrosoft.com/TestWebAPI"; //Application ID URI set in Expose an API
ClientCredential ClientCredential = new ClientCredential(CLIENT_ID, SECRET);
string authority = String.Format("{0}{1}", AZURE_AD_INSTANE, TENANT_ID);


AuthenticationContext authContext = new AuthenticationContext(authority);
string accessToken = authContext.AcquireTokenAsync(RESOURCE, ClientCredential).Result.AccessToken;

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:44326/api/values/Get");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response = client.SendAsync(request).GetAwaiter().GetResult();

string status = response.StatusCode.ToString();

开始p.cs

public void ConfigureServices(IServiceCollection services)
{
      services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
                .AddAzureADBearer(options => Configuration.Bind("AzureAd", options)); 
       services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

我正在获取访问令牌。当我在jwt登记时。io,上面写着“签名已验证”。但API调用会给出未经授权的响应状态代码。当我检查响应头时,它的信息是“{承载错误=“无效的\u令牌”,错误描述=“受众无效”}”

如何解决此问题?

共有1个答案

曹光霁
2023-03-14

确保https://MyOrg.onmicrosoft.com/TestWebAPI在您的WebAPI中注册为有效访问群体:

.AddJwtBearer(options =>
{
    options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidAudiences = new List<string> 
        {
            "https://MyOrg.onmicrosoft.com/TestWebAPI",
            "..."
        }
    }
};
 类似资料:
  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • 我的目标是编写一些代码,使 Office 365 用户能够通过 REST API 访问 OneDrive for Business 中的文件。我已经在 Azure AD 中注册了一个应用程序(Web 应用/多租户),并添加了联机访问 SharePoint 的权限。我想使用“具有 OAuth 的委派用户标识”方案,其中我的应用使用用户模拟通过 REST API 访问 OneDrive for Bus

  • Microsoft.Graph REST.API 我试图通过https://graph.microsoft.com/v1.0/me从graph.api获得有关我的信息 我也在这里检查这个其他主题,但我找不到像我一样的错误

  • 我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激

  • 我为我的Android应用程序创建了一个用于GCM推送通知的Android API键。从最近两天开始,GCM服务器返回PHP中未授权的(401)响应。 Android API密钥无效/过期有什么原因吗?还是GCM不推荐使用Android API密钥? 我仍然没有得到关于为什么Android API密钥无效的适当解释?对于GCM,他们中的大多数人更喜欢服务器密钥而不是Android API密钥,但是

  • 问题内容: 尝试使用Jenkins运行Sonarqube MSBuild Runner时出现以下错误。我正在使用SonarQube 4.5和MSBuild SonarQube Runner 1.1。有关如何解决的任何建议? 问题答案: 您需要查看配置文件SonarQube.Analysis.xml。确认属性sonar.host.url是正确的,并且您已经配置了有效的sonar.login和sona