Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Från och med den 1 maj 2025 är Azure AD B2C inte längre tillgängligt att köpa för nya kunder. Läs mer i våra vanliga frågor och svar.
Anmärkning
I Azure Active Directory B2C är anpassade principer främst utformade för att hantera komplexa scenarier. I de flesta scenarier rekommenderar vi att du använder inbyggda användarflöden. Om du inte har gjort det kan du läsa mer om startpaketet för anpassad princip i Kom igång med anpassade principer i Active Directory B2C.
Azure Active Directory B2C (Azure AD B2C) ger stöd för integrering av din egen RESTful-tjänst. Azure AD B2C skickar data till RESTful-tjänsten i en insamling av indataanspråk och tar emot data i en insamling av utdataanspråk. Mer information finns i Integrera REST API-anspråksutbyten i din anpassade Azure AD B2C-princip.
Protokoll
Attributet Namn för protokollelementet måste anges till Proprietary
.
Hanterarattributet måste innehålla det fullständigt kvalificerade namnet på protokollhanterarsammansättningen som används av Azure AD B2C: . Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
I följande exempel visas en RESTful-teknisk profil:
<TechnicalProfile Id="REST-UserMembershipValidator">
<DisplayName>Validate user input data and return loyaltyNumber claim</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
...
Indataanspråk
Elementet InputClaims innehåller en lista över anspråk som ska skickas till REST-API:et. Du kan också mappa namnet på anspråket till det namn som definierats i REST-API:et. I följande exempel visas mappningen mellan din princip och REST-API:et. GivenName-anspråket skickas till REST-API:et som firstName, medan efternamn skickas som efternamn. E-postanspråket anges som det är.
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
<InputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName" />
<InputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName" />
</InputClaims>
Elementet InputClaimsTransformations kan innehålla en samling InputClaimsTransformation-element som används för att ändra indataanspråken eller generera nya innan de skickas till REST-API:et.
Skicka en JSON-nyttolast
Med den tekniska REST API-profilen kan du skicka en komplex JSON-nyttolast till en slutpunkt.
Så här skickar du en komplex JSON-nyttolast:
- Skapa din JSON-nyttolast med GenerateJson-anspråkstransformeringen.
- I den tekniska REST API-profilen:
- Lägg till en transformering av indataanspråk med en referens till
GenerateJson
anspråkstransformeringen. - Ange metadataalternativet
SendClaimsIn
tillbody
-
ClaimUsedForRequestPayload
Ange metadataalternativet till namnet på anspråket som innehåller JSON-nyttolasten. - I indataanspråket lägger du till en referens till det indataanspråk som innehåller JSON-nyttolasten.
- Lägg till en transformering av indataanspråk med en referens till
I följande exempel TechnicalProfile
skickas ett e-postmeddelande med verifiering med hjälp av en e-posttjänst från tredje part (i det här fallet SendGrid).
<TechnicalProfile Id="SendGrid">
<DisplayName>Use SendGrid's email API to send the code to the user</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://api.sendgrid.com/v3/mail/send</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="ClaimUsedForRequestPayload">sendGridReqBody</Item>
<Item Key="DefaultUserMessageIfRequestFailed">Cannot process your request right now, please try again later.</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_SendGridApiKey" />
</CryptographicKeys>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="GenerateSendGridRequestBody" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="sendGridReqBody" />
</InputClaims>
</TechnicalProfile>
Utdataanspråk
OutputClaims-elementet innehåller en lista över anspråk som returneras av REST-API:et. Du kan behöva mappa namnet på anspråket som definierats i principen till det namn som definierats i REST-API:et. Du kan också inkludera anspråk som inte returneras av REST-API:et så länge du anger DefaultValue
attributet.
Elementet OutputClaimsTransformations kan innehålla en samling OutputClaimsTransformation-element som används för att ändra utdataanspråken eller generera nya.
I följande exempel visas anspråket som returneras av REST-API:et:
- MembershipId-anspråket som mappas till anspråksnamnet loyaltyNumber.
Den tekniska profilen returnerar också anspråk som inte returneras av identitetsprovidern:
-
loyaltyNumberIsNyt anspråk som har ett standardvärde inställt på
true
.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="loyaltyNumber" PartnerClaimType="MembershipId" />
<OutputClaim ClaimTypeReferenceId="loyaltyNumberIsNew" DefaultValue="true" />
</OutputClaims>
Metainformation
Egenskap | Krävs | Beskrivning |
---|---|---|
ServiceUrl (på engelska) | Ja | URL:en för REST API-slutpunkten. |
Autentiseringstyp | Ja | Den typ av autentisering som utförs av RESTful-anspråksprovidern. Möjliga värden: None , Basic , Bearer , ClientCertificate eller ApiKeyHeader .
|
AllowInsecureAuthInProduction | Nej | Anger om AuthenticationType kan anges till none i produktionsmiljön (DeploymentMode för TrustFrameworkPolicy har angetts till Production , eller inte angetts). Möjliga värden: sant eller falskt (standard). |
SendClaimsIn (SkickaAnspråkOm) | Nej | Anger hur indataanspråken skickas till RESTful-anspråksprovidern. Möjliga värden: Body (standard), Form , Header eller Url QueryString . Värdet Body är det indataanspråk som skickas i begärandetexten i JSON-format. Värdet Form är det indataanspråk som skickas i begärandetexten i ett &ersoch avgränsat nyckelvärdeformat. Värdet Header är det indataanspråk som skickas i begärandehuvudet. Värdet Url är det indataanspråk som skickas i URL:en, till exempel https://api.example.com/{claim1}/{claim2}?{claim3}={claim4} . Värdnamnets del av URL:en får inte innehålla anspråk. Värdet QueryString är det indataanspråk som skickas i frågesträngen för begäran. HTTP-verben som anropas av var och en är följande:
|
AnspråkFormat | Nej | Används inte för närvarande, kan ignoreras. |
ClaimUsedForRequestPayload | Nej | Namnet på ett stränganspråk som innehåller nyttolasten som ska skickas till REST-API:et. |
FelsökaMode | Nej | Kör den tekniska profilen i felsökningsläge. Möjliga värden: true , eller false (standard). I felsökningsläge kan REST-API:et returnera mer information. Se avsnittet Returnera felmeddelande . |
IncludeClaimResolvingInClaimsHandling | Nej | För indata- och utdataanspråk anger om anspråksmatchning ingår i den tekniska profilen. Möjliga värden: true , eller false (standard). Om du vill använda en anspråkslösare i den tekniska profilen anger du detta till true . |
ResolveJsonPathsInJsonTokens | Nej | Anger om den tekniska profilen löser JSON-sökvägar. Möjliga värden: true , eller false (standard). Använd dessa metadata för att läsa data från ett kapslat JSON-element. I en OutputClaim anger du PartnerClaimType till det JSON-sökvägselement som du vill mata ut. Till exempel: firstName.localized , eller data[0].to[0].email . |
UseClaimAsBearerToken (på engelska) | Nej | Namnet på anspråket som innehåller ägartoken. |
Felhantering
Följande metadata kan användas för att konfigurera felmeddelandena som visas vid REST API-fel. Felmeddelandena kan lokaliseras.
Egenskap | Krävs | Beskrivning |
---|---|---|
DefaultUserMessageIfRequestFailed | Nej | Ett standardanpassat felmeddelande för alla REST API-undantag. |
UserMessageIfCircuitOpen | Nej | Felmeddelande när REST-API:et inte kan nås. Om det inte anges returneras DefaultUserMessageIfRequestFailed. |
UserMessageIfDnsResolutionFailed | Nej | Felmeddelande för DNS-matchningsfelet. Om det inte anges returneras DefaultUserMessageIfRequestFailed. |
UserMessageIfRequestTimeout | Nej | Felmeddelande när tidsgränsen för anslutningen har överskrids. Om det inte anges returneras DefaultUserMessageIfRequestFailed. |
Krypteringsnycklar
Om typen av autentisering är inställd på None
används inte cryptographicKeys-elementet .
<TechnicalProfile Id="REST-API-SignUp">
<DisplayName>Validate user's input data and return loyaltyNumber claim</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/signup</Item>
<Item Key="AuthenticationType">None</Item>
<Item Key="SendClaimsIn">Body</Item>
</Metadata>
</TechnicalProfile>
Om typen av autentisering är inställd på Basic
innehåller cryptographicKeys-elementet följande attribut:
Egenskap | Krävs | Beskrivning |
---|---|---|
BasicAuthenticationAnvändarnamn | Ja | Användarnamnet som används för att autentisera. |
BasicAuthenticationPassword (Grundläggande autentiseringLösenord) | Ja | Lösenordet som används för att autentisera. |
I följande exempel visas en teknisk profil med grundläggande autentisering:
<TechnicalProfile Id="REST-API-SignUp">
<DisplayName>Validate user's input data and return loyaltyNumber claim</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/signup</Item>
<Item Key="AuthenticationType">Basic</Item>
<Item Key="SendClaimsIn">Body</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_B2cRestClientId" />
<Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_B2cRestClientSecret" />
</CryptographicKeys>
</TechnicalProfile>
Om typen av autentisering är inställd på ClientCertificate
innehåller cryptographicKeys-elementet följande attribut:
Egenskap | Krävs | Beskrivning |
---|---|---|
klientcertifikat | Ja | X509-certifikatet (RSA-nyckeluppsättningen) som ska användas för att autentisera. |
<TechnicalProfile Id="REST-API-SignUp">
<DisplayName>Validate user's input data and return loyaltyNumber claim</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/signup</Item>
<Item Key="AuthenticationType">ClientCertificate</Item>
<Item Key="SendClaimsIn">Body</Item>
</Metadata>
<CryptographicKeys>
<Key Id="ClientCertificate" StorageReferenceId="B2C_1A_B2cRestClientCertificate" />
</CryptographicKeys>
</TechnicalProfile>
Om typen av autentisering är inställd på Bearer
innehåller cryptographicKeys-elementet följande attribut:
Egenskap | Krävs | Beskrivning |
---|---|---|
BearerAuthenticationToken (på engelska) | Nej | OAuth 2.0-ägartoken. |
<TechnicalProfile Id="REST-API-SignUp">
<DisplayName>Validate user's input data and return loyaltyNumber claim</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/signup</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="SendClaimsIn">Body</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_B2cRestClientAccessToken" />
</CryptographicKeys>
</TechnicalProfile>
Om typen av autentisering är inställd på ApiKeyHeader
innehåller cryptographicKeys-elementet följande attribut:
Egenskap | Krävs | Beskrivning |
---|---|---|
Namnet på HTTP-huvudet, till exempel x-functions-key , eller x-api-key . |
Ja | Nyckeln som används för att autentisera. |
Anmärkning
För närvarande stöder Azure AD B2C endast ett HTTP-huvud för autentisering. Om ditt RESTful-anrop kräver flera huvuden, till exempel ett klient-ID och ett klienthemlighetsvärde, måste du proxy-överföra begäran på något sätt.
<TechnicalProfile Id="REST-API-SignUp">
<DisplayName>Validate user's input data and return loyaltyNumber claim</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/signup</Item>
<Item Key="AuthenticationType">ApiKeyHeader</Item>
<Item Key="SendClaimsIn">Body</Item>
</Metadata>
<CryptographicKeys>
<Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
</CryptographicKeys>
</TechnicalProfile>
Returnerar valideringsfelmeddelande
Rest-API:et kan behöva returnera ett felmeddelande, till exempel "Användaren hittades inte i CRM-systemet". Om ett fel uppstår ska REST API returnera ett HTTP 4xx-felmeddelande, till exempel 400 (felaktig begäran) eller 409 (konflikt) svarsstatuskod. Svarstexten innehåller felmeddelandet formaterat i JSON:
{
"version": "1.0.0",
"status": 409,
"code": "API12345",
"requestId": "50f0bd91-2ff4-4b8f-828f-00f170519ddb",
"userMessage": "Message for the user",
"developerMessage": "Verbose description of problem and how to fix it.",
"moreInfo": "https://restapi/error/API12345/moreinfo"
}
Egenskap | Krävs | Beskrivning |
---|---|---|
version | Ja | Din REST API-version. Till exempel: 1.0.1 |
tillstånd | Ja | Ett HTTP-svarsstatuskodsliknande nummer och måste vara 409. Rest-tjänsten kan returnera en HTTP 4XX-statuskod, men värdet för den status inlämnade i den JSON-formaterade svarstexten måste vara 409 . |
kod | Nej | En felkod från RESTful-slutpunktsprovidern, som visas när DebugMode är aktiverad. |
förfråganID | Nej | En begärandeidentifierare från RESTful-slutpunktsprovidern, som visas när DebugMode är aktiverad. |
användarmeddelande | Ja | Ett felmeddelande som visas för användaren. |
developerMessage | Nej | Den utförliga beskrivningen av problemet och hur du åtgärdar det, som visas när DebugMode är aktiverat. |
merInfo | Nej | En URI som pekar på ytterligare information, som visas när DebugMode är aktiverad. |
I följande exempel visas en C#-klass som returnerar ett felmeddelande:
public class ResponseContent
{
public string Version { get; set; }
public int Status { get; set; }
public string Code { get; set; }
public string UserMessage { get; set; }
public string DeveloperMessage { get; set; }
public string RequestId { get; set; }
public string MoreInfo { get; set; }
}
Nästa steg
I följande artiklar finns exempel på hur du använder en RESTful-teknisk profil: