Skip to content

Commit 6e7fb9d

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into sap-redux
2 parents 3ff79d7 + a02251d commit 6e7fb9d

File tree

277 files changed

+2600
-1433
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

277 files changed

+2600
-1433
lines changed

articles/api-center/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,5 +90,7 @@
9090
items:
9191
- name: Samples and labs
9292
href: resources.md
93+
- name: Building an API security strategy
94+
href: https://aka.ms/API-Security-EBook
9395
- name: Azure updates
9496
href: https://aka.ms/apic/updates

articles/api-management/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,8 @@
657657
href: /azure/architecture/best-practices/api-design?toc=%2Fazure%2Fapi-management%2Ftoc.json&bc=/azure/api-management/breadcrumb/toc.json
658658
- name: Web API implementation
659659
href: /azure/architecture/best-practices/api-implementation?toc=%2Fazure%2Fapi-management%2Ftoc.json&bc=/azure/api-management/breadcrumb/toc.json
660+
- name: Building an API security strategy
661+
href: https://aka.ms/API-Security-EBook
660662
- name: Breaking changes and retirements
661663
items:
662664
- name: Breaking changes overview

articles/api-management/authentication-authorization-overview.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,4 @@ While authorization is preferred, and OAuth 2.0 has become the dominant method o
154154
## Next steps
155155
* Learn more about [authentication and authorization](../active-directory/develop/authentication-vs-authorization.md) in the Microsoft identity platform.
156156
* Learn how to [mitigate OWASP API security threats](mitigate-owasp-api-threats.md) using API Management.
157+
* Learn how to [build a comprehensive API security strategy](https://aka.ms/API-Security-EBook)

articles/api-management/mitigate-owasp-api-threats.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,5 +318,6 @@ Learn more about:
318318
* [Authentication and authorization in API Management](authentication-authorization-overview.md)
319319
* [Security baseline for API Management](/security/benchmark/azure/baselines/api-management-security-baseline)
320320
* [Security controls by Azure policy](security-controls-policy.md)
321+
* [Building a comprehensive API security strategy](https://aka.ms/API-Security-EBook)
321322
* [Landing zone accelerator for API Management](/azure/cloud-adoption-framework/scenarios/app-platform/api-management/landing-zone-accelerator)
322323
* [Microsoft Defender for Cloud](/azure/defender-for-cloud/defender-for-cloud-introduction)

articles/api-management/protect-with-defender-for-apis.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,5 @@ You can remove APIs from protection by Defender for APIs by using Defender for C
112112

113113
* Learn more about [Defender for Cloud](/azure/defender-for-cloud/defender-for-cloud-introduction)
114114
* Learn more about [API findings, recommendations, and alerts](/azure/defender-for-cloud/defender-for-apis-posture) in Defender for APIs
115+
Learn how to [build a comprehensive API security strategy](https://aka.ms/API-Security-EBook)
115116
* Learn how to [upgrade and scale](upgrade-and-scale.md) an API Management instance

articles/api-management/validate-jwt-policy.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ The `validate-jwt` policy enforces existence and validity of a supported JSON we
8585
| Element | Description | Required |
8686
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
8787
| openid-config |Add one or more of these elements to specify a compliant OpenID configuration endpoint URL from which signing keys and issuer can be obtained.<br/><br/>Configuration including the JSON Web Key Set (JWKS) is pulled from the endpoint every 1 hour and cached. If the token being validated references a validation key (using `kid` claim) that is missing in cached configuration, or if retrieval fails, API Management pulls from the endpoint at most once per 5 min. These intervals are subject to change without notice. <br/><br/>The response should be according to specs as defined at URL: `https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata`. <br/><br/>For Microsoft Entra ID use the OpenID Connect [metadata endpoint](../active-directory/develop/v2-protocols-oidc.md#find-your-apps-openid-configuration-document-uri) configured in your app registration such as:<br/>- v2 `https://login.microsoftonline.com/{tenant-name}/v2.0/.well-known/openid-configuration`<br/>- v2 Multi-Tenant ` https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration`<br/>- v1 `https://login.microsoftonline.com/{tenant-name}/.well-known/openid-configuration` <br/>- Customer tenant (preview) `https://{tenant-name}.ciamlogin.com/{tenant-id}/v2.0/.well-known/openid-configuration` <br/><br/> Substituting your directory tenant name or ID, for example `contoso.onmicrosoft.com`, for `{tenant-name}`. | No |
88-
| issuer-signing-keys | A list of Base64-encoded security keys, in [`key`](#key-attributes) subelements, used to validate signed tokens. If multiple security keys are present, then each key is tried until either all are exhausted (in which case validation fails) or one succeeds (useful for token rollover). <br/><br/>Optionally specify a key by using the `id` attribute to match a `kid` claim. To validate a token signed with an asymmetric key, optionally specify the public key using a `certificate-id` attribute with value set to the identifier of a certificate uploaded to API Management, or the RSA modulus `n` and exponent `e` pair of the signing key in Base64url-encoded format. | No |
88+
| issuer-signing-keys | A list of Base64-encoded security keys, in [`key`](#key-attributes) subelements, used to validate signed tokens. If multiple security keys are present, then each key is tried until either all are exhausted (in which case validation fails) or one succeeds (useful for token rollover). <br/><br/>Optionally, specify a key by using the `id` attribute to match the token's `kid` claim. To validate a token signed with an asymmetric key, optionally specify the public key using a `certificate-id` attribute with value set to the identifier of a certificate uploaded to API Management, or the RSA modulus `n` and exponent `e` pair of the signing key in Base64url-encoded format. | No |
8989
| decryption-keys | A list of Base64-encoded keys, in [`key`](#key-attributes) subelements, used to decrypt the tokens. If multiple security keys are present, then each key is tried until either all keys are exhausted (in which case validation fails) or a key succeeds.<br/><br/> To decrypt a token encrypted with an asymmetric key, optionally specify the public key using a `certificate-id` attribute with value set to the identifier of a certificate uploaded to API Management. | No |
9090
| audiences | A list of acceptable audience claims, in `audience` subelements, that can be present on the token. If multiple audience values are present, then each value is tried until either all are exhausted (in which case validation fails) or until one succeeds. At least one audience must be specified. | No |
9191
| issuers | A list of acceptable principals, in `issuer` subelements, that issued the token. If multiple issuer values are present, then each value is tried until either all are exhausted (in which case validation fails) or until one succeeds. | No |
@@ -94,7 +94,7 @@ The `validate-jwt` policy enforces existence and validity of a supported JSON we
9494
### key attributes
9595
| Attribute | Description | Required | Default |
9696
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
97-
| id | (Issuer signing key only) String. Identifier used to match `kid` claim presented in JWT. | No | N/A |
97+
| id | (Issuer signing key only) String. Identifier used to match `kid` claim presented in JWT. If no keys match the claim, API Management will attempt each specified key. [Learn more about the `kid` claim in the RFC](https://www.rfc-editor.org/rfc/rfc7515#section-4.1.4). | No | N/A |
9898
| certificate-id | Identifier of a certificate entity [uploaded](/rest/api/apimanagement/apimanagementrest/azure-api-management-rest-api-certificate-entity#Add) to API Management, used to specify the public key to verify a token signed with an asymmetric key. | No | N/A |
9999
| n | (Issuer signing key only) Modulus of the public key used to verify the issuer of a token signed with an asymmetric key. Must be specified with the value of the exponent `e`. Policy expressions aren't allowed. | No | N/A|
100100
| e | (Issuer signing key only) Exponent of the public key used to verify the issuer of a token signed with an asymmetric key. Must be specified with the value of the modulus `n`. Policy expressions aren't allowed. | No | N/A|

articles/azure-app-configuration/feature-management-python-reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ zone_pivot_groups: feature-management
2323

2424
:::zone target="docs" pivot="preview-version"
2525

26-
[![Feature Management](https://img.shields.io/pypi/v/FeatureManagement/2.0.0b1?color=blue)](https://pypi.org/project/FeatureManagement/2.0.0b1/)<br>
26+
[![Feature Management](https://img.shields.io/pypi/v/FeatureManagement/2.0.0b2?color=blue)](https://pypi.org/project/FeatureManagement/2.0.0b2/)<br>
2727

2828
:::zone-end
2929

@@ -54,7 +54,7 @@ As an example, a Microsoft Edge browser feature filter could be designed. This f
5454

5555
### Feature flag configuration
5656

57-
A Python dictionary is used to define feature flags. The dictionary is composed of feature names as keys and feature flag objects as values. The feature flag object is a dictionary that contains an `EnabledFor` key. The `EnabledFor` key is a list of feature filters that are used to determine if the feature should be enabled.
57+
A Python dictionary is used to define feature flags. The dictionary is composed of feature names as keys and feature flag objects as values. The feature flag object is a dictionary that contains a `conditions` key, which itself contains the `client_filters` key. The `client_filters` key is a list of feature filters that are used to determine if the feature should be enabled.
5858

5959
### Feature flag declaration
6060

articles/azure-functions/functions-bindings-event-grid-trigger.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ The type of the input parameter used with an Event Grid trigger depends on these
4444

4545
When running your C# function in an isolated worker process, you need to define a custom type for event properties. The following example defines a `MyEventType` class.
4646

47-
:::code language="csharp" source="~/azure-functions-dotnet-worker/samples/Extensions/EventGrid/EventGridFunction.cs" range="35-49":::
47+
:::code language="csharp" source="~/azure-functions-dotnet-worker/samples/Extensions/EventGrid/EventGridFunction.cs" range="35-48":::
4848

4949
The following example shows how the custom type is used in both the trigger and an Event Grid output binding:
5050

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
---
2+
title: Add custom protocol PMTiles in the Web SDK | Microsoft Azure Maps
3+
description: Learn how to add custom protocol PMTiles using the Web SDK.
4+
author: sinnypan
5+
ms.author: sipa
6+
ms.date: 10/13/2024
7+
ms.topic: how-to
8+
ms.service: azure-maps
9+
ms.subservice: web-sdk
10+
---
11+
12+
# Add custom protocol PMTiles
13+
14+
The Azure Maps Web SDK supports custom protocols such as [PMTiles]. The `pmtiles://` protocol is used to reference PMTiles archives, which are single-file formats for storing tiled data such as vector and raster maps. This protocol allows Azure Maps to access specific tiles within a PMTiles archive using an HTTP request, fetching only the necessary data on demand.
15+
16+
## Add custom protocol
17+
18+
By using the `addProtocol` function, which registers a callback triggered before any AJAX request made by the library, you can intercept, modify, and return the request for further processing and rendering. This enables the implementation of a custom callback function to load resources when a URL starts with the designated custom schema.
19+
20+
The first step is to add a reference to the protocol. The following example references the `pmtiles` library:
21+
22+
```html
23+
<script src="https://unpkg.com/[email protected]/dist/pmtiles.js"></script>
24+
```
25+
26+
Next, initialize the MapLibre PMTiles protocol.
27+
28+
```js
29+
//Initialize the plugin.
30+
const protocol = new pmtiles.Protocol();
31+
atlas.addProtocol("pmtiles", (request) => {
32+
return new Promise((resolve, reject) => {
33+
const callback = (err, data) => {
34+
if (err) {
35+
reject(err);
36+
} else {
37+
resolve({ data });
38+
}
39+
};
40+
protocol.tile(request, callback);
41+
});
42+
});
43+
```
44+
45+
## Add PMTiles protocol
46+
47+
To add the PMTiles protocol, hook the data source with the specified protocol URL schema. The following sample uses the [Overture] building dataset to add building data over the basemap.
48+
49+
```js
50+
const PMTILES_URL = "https://overturemaps-tiles-us-west-2-beta.s3.amazonaws.com/2024-07-22/buildings.pmtiles";
51+
protocol.add(new pmtiles.PMTiles(PMTILES_URL));
52+
```
53+
54+
## Add PMTiles as a map source
55+
56+
PMTiles are added as a map source during the map event. Once added, the specified URL schema is available to the Azure Maps Web SDK. In the following sample, the PMTiles URL is added as a `VectorTileSource`.
57+
58+
```js
59+
//Add the source to the map.
60+
map.sources.add(
61+
new atlas.source.VectorTileSource("pmtiles", {
62+
type: "vector",
63+
url: `pmtiles://${PMTILES_URL}`,
64+
})
65+
);
66+
```
67+
68+
> [!NOTE]
69+
> Using the `pmtiles://` protocol automatically creates the `minzoom` and `maxzoom` properties for the source.
70+
71+
## Enhance map with Overture data
72+
73+
Overture provides a unified and comprehensive [data schema] designed to organize and structure geospatial data effectively. This schema is divided into different themes, each representing a specific type of geospatial information.
74+
75+
The following sample uses the building theme's properties (for example, building type and height) to demonstrate building extrusion and differentiate between building categories on the basemap, rather than just showing building footprints.
76+
77+
```js
78+
//Create a polygon extrusion layer.
79+
layer = new atlas.layer.PolygonExtrusionLayer(
80+
"pmtiles",
81+
"building",
82+
{
83+
sourceLayer: "building",
84+
height: ["get", "height"],
85+
fillOpacity: 0.5,
86+
fillColor: [
87+
"case",
88+
['==', ['get', 'subtype'], 'agricultural'],
89+
"wheat",
90+
['==', ['get', 'subtype'], 'civic'],
91+
"teal",
92+
['==', ['get', 'subtype'], 'commercial'],
93+
"blue",
94+
['==', ['get', 'subtype'], 'education'],
95+
"aqua",
96+
['==', ['get', 'subtype'], 'entertainment'],
97+
"pink",
98+
['==', ['get', 'subtype'], 'industrial'],
99+
"yellow",
100+
['==', ['get', 'subtype'], 'medical'],
101+
"red",
102+
['==', ['get', 'subtype'], 'military'],
103+
"darkgreen",
104+
['==', ['get', 'subtype'], 'outbuilding'],
105+
"white",
106+
['==', ['get', 'subtype'], 'religious'],
107+
"khaki",
108+
['==', ['get', 'subtype'], 'residential'],
109+
"green",
110+
['==', ['get', 'subtype'], 'service'],
111+
"gold",
112+
['==', ['get', 'subtype'], 'transportation'],
113+
"orange",
114+
"grey",
115+
],
116+
filter: ['any', ['==', ['geometry-type'], 'Polygon'], ['==', ['geometry-type'], 'MultiPolygon']]
117+
}
118+
);
119+
```
120+
121+
The following image shows a screenshot displaying the extrusion of buildings of different types near Central Park in New York City.
122+
123+
:::image type="content" source="media/add-custom-protocol-pmtiles/pmtiles-building.png" lightbox="media/add-custom-protocol-pmtiles/pmtiles-building.png" alt-text="A screenshot demonstrating the custom protocol pmtiles.":::
124+
125+
For a fully functional sample with source code, see [Azure Maps Samples GitHub Repo].
126+
127+
<!--
128+
For more PMTiles samples, see [Azure Maps Samples].
129+
[Azure Maps Samples]: https://samples.azuremaps.com/?search=pmtiles
130+
-->
131+
132+
## Next Steps
133+
134+
The following articles are related to custom protocol PMTiles:
135+
136+
> [!div class="nextstepaction"]
137+
> [Create Data Source](create-data-source-web-sdk.md)
138+
139+
> [!div class="nextstepaction"]
140+
> [Data Driven Style Expressions](data-driven-style-expressions-web-sdk.md)
141+
142+
[Azure Maps Samples GitHub Repo]: https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/main/Samples/PMTiles/Overture%20Building%20Theme/Buildings.html
143+
[data schema]: https://docs.overturemaps.org/schema
144+
[Overture]: https://overturemaps.org
145+
[PMTiles]: https://docs.protomaps.com/pmtiles
1.61 MB
Loading

0 commit comments

Comments
 (0)