Azure ad b2c Azure B2C API管理多租户jwt验证

Azure ad b2c Azure B2C API管理多租户jwt验证,azure-ad-b2c,azure-api-management,Azure Ad B2c,Azure Api Management,azure B2C中是否有一个公共端点可用于验证多个azure B2C租户颁发的令牌,如在普通azure AD中:() 普通azure AD的jwt令牌验证示例: <validate-jwt header-name="authorization" failed-validation-httpcode="401" failed-validation-error-message="GWT FAIL" output-token-vari

azure B2C中是否有一个公共端点可用于验证多个azure B2C租户颁发的令牌,如在普通azure AD中:()

普通azure AD的jwt令牌验证示例:

<validate-jwt header-name="authorization" failed-validation-httpcode="401" failed-validation-error-message="GWT FAIL" output-token-variable-name="jwt">
            <openid-config url="https://login.microsoftonline.com/common/.well-known/openid-configuration" />
        </validate-jwt>  


关于

不,没有。每个租户都是他们自己的身份提供商,没有常规AAD中的“多路复用器”。

在B2C中,如果您将技术配置文件配置为从azure ad返回access\u令牌,那么您可以使用
access\u令牌
中的issuer claim
iss
查找发卡机构并将其用于jwt验证。这显示了如何返回访问令牌

例如,下面的技术配置文件返回一个访问令牌
,该令牌带有一个声明
iss
,其值为
”https://sts.windows.net/12340-123120-112112323/“
可用于验证令牌

<TechnicalProfiles>
        <TechnicalProfile Id="AzureADProfile_issueAADtoken">
          <DisplayName>AzureAD User</DisplayName>
          <Description>AzureAD Account</Description>
          <Protocol Name="OAuth2" />
          <OutputTokenFormat>JWT</OutputTokenFormat>
          <Metadata>
            <Item Key="AccessTokenEndpoint">https://login.microsoftonline.com/common/oauth2/v2.0/token</Item>
            <Item Key="authorization_endpoint">https://login.microsoftonline.com/common/oauth2/v2.0/authorize</Item>
            <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
          
            <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="ValidTokenIssuerPrefixes">https://sts.windows.net/</Item>

          </Metadata>
          <CryptographicKeys>

            <Key Id="client_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="displayName" />
            
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="givenName" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="surname" />
            <OutputClaim ClaimTypeReferenceId="userPrincipalName" PartnerClaimType="userPrincipalName" />
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="id" />
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>

            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
        </TechnicalProfile>
      </TechnicalProfiles>

AzureAD用户
AzureAD账户
JWT
https://login.microsoftonline.com/common/oauth2/v2.0/token
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
授权标头
真的
邮递
代码
openid
假的
https://sts.windows.net/

好的,谢谢您的快速回答!因此,在azure apimanagement中验证多个B2C租户发行的代币是不可能的(对于同一个api)?因为您能够将C#代码输出到这些策略中,所以可能是有可能的:)但我不知道您如何在APIM中为每个AAD B2C添加授权元素。AAD B2C没有像AAD Common endpoint那样的通用问题。