如何使用angular中的Azure devops REST API

如何使用angular中的Azure devops REST API,angular,azure-devops,azure-active-directory,msal-angular,Angular,Azure Devops,Azure Active Directory,Msal Angular,我已经创建了一个Angular应用程序,在这里我必须使用Azure DevOps REST API来检索票证详细信息。我正在使用@Azure/msal angular、@Azure/msal浏览器包根据客户端Azure广告对用户进行身份验证 我用的是这样的,URL的语法应该是GEThttps://dev.azure.com/{organization}/{project}/{u-api/wit/workitems/{id}对我不起作用 但当我将GET https://[ClientURL.com

我已经创建了一个Angular应用程序,在这里我必须使用Azure DevOps REST API来检索票证详细信息。我正在使用@Azure/msal angular、@Azure/msal浏览器包根据客户端Azure广告对用户进行身份验证

我用的是这样的,URL的语法应该是GEThttps://dev.azure.com/{organization}/{project}/{u-api/wit/workitems/{id}对我不起作用

但当我将GET https://[ClientURL.com]/[resource/location]/\u api/wit/workitems?ids=123粘贴到浏览器地址栏时,我得到了JSON响应

我正在使用我通过调用我的客户端url之类的东西来使用REST服务的令牌 获取https://[ClientURL.com]/[resource/location]/\u api/wit/workitems?ids=123

我正在使用MsalInterceptor拦截请求,它将添加身份验证头

我得到一个错误,说拦截器-acquireTokenSilent被错误拒绝。调用交互来解决问题

对于angular,我找不到任何足够好的文档,并且很难理解是否需要再次对RESTAPI进行身份验证,或者AD身份验证应该可以

更新

应用程序已经使用C语言构建。我的客户希望它使用Angular进行开发。 这是我的登录配置

export function MSALInstanceFactory(): IPublicClientApplication {
        return new PublicClientApplication({
            auth: {
                clientId: '' // my registered angular app clientId,
                authority: 'https://login.microsoftonline.com/my_tenentid',
                redirectUri: 'https://localhost:8080',
                
            },
            cache: {
              cacheLocation: 'localStorage'
            }
        })
        }
  
我正在使用MSAL验证我的应用程序

loginMsal() {
  this.msalService.loginPopup().subscribe(
    (response: AuthenticationResult) => {
      this.loginSuccessfull(response)

    })
 }
需要帮助

您需要检查azure门户中是否已授予azure DevOps的权限。请参阅以下步骤以授予Azure DevOps的权限

导航到已注册的应用程序门户->管理->添加权限->选择Azure DevOps->选择委派权限->检查用户模拟下的API权限

您可以在身份验证头中添加访问令牌,如下例所示

有关更多信息,请参阅

更新:

const tokenRequest = {
      scopes: [ "api://499b84ac-1321-427f-aa17-267ca6975798/.default" ]
 };

this.authService.instance.acquireTokenSilent(tokenRequest).then(tokenResponse => {
              
              var vstsApi = "https://dev.azure.com/myorg/myproje/_apis/wit/workitems/5?api-version=6.1-preview.3"
              var xhr = new XMLHttpRequest();
                
              xhr.open('GET', vstsApi, true);
              var res = xhr.setRequestHeader('Authorization', 'Bearer ' + tokenResponse.accessToken);
 })

即使我有用户模拟权限TF400813,我也会收到以下错误:资源不可用于匿名访问。需要客户端身份验证。@KedarUdupa您可以共享代码的相关部分以获取访问令牌吗?应为azure devops resourceie生成访问令牌。499b84ac-1321-427f-aa17-267ca6975798或https://app.vssps.visualstudio.com.I 我更新了我的问题。还需要分别对这两个资源进行身份验证。!?我正在学习Azure,非常感谢您的支持help@KedarUdupa您可以检查文档以获取Azure devops api的访问令牌。见以上更新:
const tokenRequest = {
      scopes: [ "api://499b84ac-1321-427f-aa17-267ca6975798/.default" ]
 };

this.authService.instance.acquireTokenSilent(tokenRequest).then(tokenResponse => {
              
              var vstsApi = "https://dev.azure.com/myorg/myproje/_apis/wit/workitems/5?api-version=6.1-preview.3"
              var xhr = new XMLHttpRequest();
                
              xhr.open('GET', vstsApi, true);
              var res = xhr.setRequestHeader('Authorization', 'Bearer ' + tokenResponse.accessToken);
 })