使用 DefaultAzureCredential 使用系统管理的标识访问 Azure AppConfiguration

时间:2021-03-17 17:29:53

标签: azure azure-function-app azure-managed-identity azure-app-configuration

我有一个 functionApp (V3),它尝试使用 DefaultAzureCredential 访问应用程序配置。我的系统管理用户已打开并具有“应用程序配置数据读取器”角色。我在调试中在本地运行它,因此需要默认凭据。我也有多个租户,所以我必须在 DefaultAzureCredentialOptions 上设置 VisualStudioTenantId 和 SharedTokenCacheTenantId。

在访问 Key Vault 以获取机密时凭据有效,但需要设置 SharedTokenCacheTenantId。

当连接到应用配置时,我收到“服务请求失败。状态:403(禁止)。

见下面的代码:

import React from 'react'
import styled from 'styled-components'
import Layout from '../components/layout'
import Button from '../components/Button'
import { graphql } from 'gatsby';
import Image from 'gatsby-image';
import { Container, Row, Col,Carousel, Card} from 'react-bootstrap'
import Logo from "../assets/images/logoimagen3.png"

import 'bootstrap/dist/css/bootstrap.min.css';

export const query = graphql`
  query ($slug : String! ) {
    detallesCategoriasJson(slug: {eq: $slug}) {
      nombre
      descripcion
      img {
        childImageSharp {
          fluid {
            ...GatsbyImageSharpFluid
          }
        }
      }
      galeria {
        producto {
          imageC {
            id
            base
            childImageSharp {
              fluid {
                ...GatsbyImageSharpFluid
              }
            }
          }
          nombrePro
          descripcionPro
        }
      }
    }
  }
`;


const templateDetalleCat = ({ data }) => {

  const tD = data.detallesCategoriasJson;
  return (
    <Layout>
        <Container>
        <ProductsHeading> Productos de {tD.nombre} </ProductsHeading>
        <Row>
          {tD.gallery.product.map(image => (
             <Col md={3}>
             <Card className="mb-3">
               <Image 
                 fluid={image.gallery.product.imageC.childImageSharp.fluid}
                 alt={image.gallery.product.imageC.base.split('.')[0]}
                 className="card-img-top" 
               />
             <Card.Body>
               <Card.Title> Hello </Card.Title>
               <Card.Text>
                 <p> Hello </p>
               </Card.Text>
               <Button  target="_blank" href="https://www.google.com.ec" >Comprar</Button>
             </Card.Body>  
           </Card>
             </Col>
          ))} 
          </Row>
        </Container>
      
    </Layout>
  )
}

export default templateDetalleCat

谢谢!

1 个答案:

答案 0 :(得分:2)

感谢 zhenlan here 回答了我的问题。我的本地 Visual Studio 用户也需要被授予“应用配置数据阅读器”才能在本地调试我的代码。