You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/active-directory/develop/tutorial-v2-javascript-spa.md
+6-7Lines changed: 6 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -159,7 +159,7 @@ sampleApp/
159
159
In the next steps you'll create a new folder for the JavaScript SPA, and set up the user interface (UI).
160
160
161
161
> [!TIP]
162
-
> When you set up an Azure Active Directory (Azure AD) account, you create a tenant. This is a digital representation of your organization, and is primarily associated with a domain, like Microsoft.com. If you wish to learn how applications can work with multiple tenants, refer to the [application model](https://docs.microsoft.com/azure/active-directory/develop/application-model).
162
+
> When you set up an Azure Active Directory (Azure AD) account, you create a tenant. This is a digital representation of your organization, and is primarily associated with a domain, like Microsoft.com. If you wish to learn how applications can work with multiple tenants, refer to the [application model](/articles/active-directory/develop/application-model.md).
163
163
164
164
## Create the SPA UI
165
165
@@ -178,13 +178,12 @@ In the next steps you'll create a new folder for the JavaScript SPA, and set up
@@ -488,7 +487,7 @@ The `acquireTokenSilent` method handles token acquisition and renewal without an
488
487
489
488
## Call the Microsoft Graph API using the acquired token
490
489
491
-
1. In the *JavaScriptSPA* folder create a *.js* file named *graphConfig.js*, which stores the Representational State Transfer ([REST](https://docs.microsoft.com/rest/api/azure/)) endpoints. Add the following code:
490
+
1. In the *JavaScriptSPA* folder create a *.js* file named *graphConfig.js*, which stores the Representational State Transfer ([REST](/rest/api/azure/)) endpoints. Add the following code:
Copy file name to clipboardExpand all lines: articles/active-directory/develop/tutorial-v2-react.md
+49-42Lines changed: 49 additions & 42 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,26 +133,24 @@ In the [Redirect URI: MSAL.js 2.0 with auth code flow](scenario-spa-app-registra
133
133
import { msalConfig } from "./authConfig";
134
134
```
135
135
136
-
1. Underneath the imports in*src/index.js* create a `PublicClientApplication` instance using the configuration from step 1.
136
+
2. Underneath the imports in*src/index.js* create a `PublicClientApplication` instance using the configuration from step 1.
137
137
138
138
```javascript
139
139
const msalInstance = new PublicClientApplication(msalConfig);
140
140
```
141
141
142
-
1. Find the `<App />` component in*src/index.js* and wrap it in the `MsalProvider`component. Your render function should look like this:
142
+
3. Find the `<App />` component in*src/index.js* and wrap it in the `MsalProvider`component. Your render function should look like this:
143
143
144
144
```jsx
145
-
ReactDOM.render(
145
+
root.render(
146
146
<React.StrictMode>
147
147
<MsalProviderinstance={msalInstance}>
148
148
<App/>
149
149
</MsalProvider>
150
-
</React.StrictMode>,
151
-
document.getElementById("root")
150
+
</React.StrictMode>
152
151
);
153
152
```
154
153
155
-
156
154
## Sign in users
157
155
158
156
Create a folder in *src* called *components* and create a file inside this folder named *SignInButton.jsx*. Add the code from either of the following sections to invoke login using a pop-up window or a full-frame redirect:
@@ -167,20 +165,22 @@ import { useMsal } from "@azure/msal-react";
167
165
import { loginRequest } from"../authConfig";
168
166
importButtonfrom"react-bootstrap/Button";
169
167
170
-
functionhandleLogin(instance) {
171
-
instance.loginPopup(loginRequest).catch(e=> {
172
-
console.error(e);
173
-
});
174
-
}
175
168
176
169
/**
177
170
* Renders a button which, when selected, will open a popup for login
178
171
*/
179
172
exportconstSignInButton= () => {
180
173
const { instance } =useMsal();
181
174
175
+
consthandleLogin= (loginType) => {
176
+
if (loginType ==="popup") {
177
+
instance.loginPopup(loginRequest).catch(e=> {
178
+
console.log(e);
179
+
});
180
+
}
181
+
}
182
182
return (
183
-
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin(instance)}>Sign in using Popup</Button>
183
+
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin("popup")}>Sign in using Popup</Button>
184
184
);
185
185
}
186
186
```
@@ -195,20 +195,22 @@ import { useMsal } from "@azure/msal-react";
195
195
import { loginRequest } from"../authConfig";
196
196
importButtonfrom"react-bootstrap/Button";
197
197
198
-
functionhandleLogin(instance) {
199
-
instance.loginRedirect(loginRequest).catch(e=> {
200
-
console.error(e);
201
-
});
202
-
}
203
198
204
199
/**
205
200
* Renders a button which, when selected, will redirect the page to the login prompt
206
201
*/
207
202
exportconstSignInButton= () => {
208
203
const { instance } =useMsal();
209
204
205
+
consthandleLogin= (loginType) => {
206
+
if (loginType ==="redirect") {
207
+
instance.loginRedirect(loginRequest).catch(e=> {
208
+
console.log(e);
209
+
});
210
+
}
211
+
}
210
212
return (
211
-
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin(instance)}>Sign in using Redirect</Button>
213
+
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin("redirect")}>Sign in using Redirect</Button>
@@ -424,7 +431,7 @@ In order to render certain components only for authenticated or unauthenticated
424
431
});
425
432
});
426
433
}
427
-
434
+
428
435
return (
429
436
<>
430
437
<h5 className="card-title">Welcome {name}</h5>
@@ -450,7 +457,7 @@ In order to render certain components only for authenticated or unauthenticated
450
457
451
458
1. Finally, add your new`ProfileContent` component as a child of the `AuthenticatedTemplate`in your `App` component in*src/App.js*. Your`App` component should look like this:
452
459
453
-
```javascript
460
+
```jsx
454
461
function App() {
455
462
return (
456
463
<PageLayout>
@@ -538,15 +545,15 @@ If you're using Internet Explorer, we recommend that you use the `loginRedirect`
538
545
function ProfileContent() {
539
546
const { instance, accounts } = useMsal();
540
547
const [graphData, setGraphData] = useState(null);
541
-
548
+
542
549
const name = accounts[0] && accounts[0].name;
543
-
550
+
544
551
function RequestProfileData() {
545
552
const request = {
546
553
...loginRequest,
547
554
account: accounts[0]
548
555
};
549
-
556
+
550
557
// Silently acquires an access token which is then attached to a request for Microsoft Graph data
Copy file name to clipboardExpand all lines: articles/azure-vmware/attach-azure-netapp-files-to-azure-vmware-solution-hosts.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,7 +64,7 @@ There are some important best practices to follow for optimal performance of NFS
64
64
- Create Azure NetApp Files volumes using **Standard** network features to enable optimized connectivity from Azure VMware Solution private cloud via ExpressRoute FastPath connectivity.
65
65
- For optimized performance, choose **UltraPerformance** gateway and enable [ExpressRoute FastPath](../expressroute/expressroute-howto-linkvnet-arm.md#configure-expressroute-fastpath) from a private cloud to Azure NetApp Files volumes virtual network. View more detailed information on gateway SKUs at [About ExpressRoute virtual network gateways](../expressroute/expressroute-about-virtual-network-gateways.md).
66
66
- Based on your performance requirements, select the correct service level needed for the Azure NetApp Files capacity pool. For best performance, it's recommended to use the Ultra tier.
67
-
- Create multiple datastores of 4-TB size for better performance. The default limit is 8 but it can be increased up to a maximum of 256 by submitting a support ticket. To submit a support ticket, go to [Create an Azure support request](../azure-portal/supportability/how-to-create-azure-support-request.md).
67
+
- Create multiple datastores of 4-TB size for better performance. The default limit is 64 but it can be increased up to a maximum of 256 by submitting a support ticket. To submit a support ticket, go to [Create an Azure support request](../azure-portal/supportability/how-to-create-azure-support-request.md).
68
68
- Work with your Microsoft representative to ensure that the Azure VMware Solution private cloud and the Azure NetApp Files volumes are deployed within same [Availability Zone](../availability-zones/az-overview.md#availability-zones).
69
69
70
70
## Attach an Azure NetApp Files volume to your private cloud
Copy file name to clipboardExpand all lines: articles/cost-management-billing/costs/tutorial-acm-create-budgets.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -160,12 +160,15 @@ Budget integration with action groups works for action groups that have enabled
160
160
161
161
## View budgets in the Azure mobile app
162
162
163
-
You can view budgets for your subscriptions and resource groups from the **Cost Management** card in Azure mobileapp.
163
+
You can view budgets for your subscriptions and resource groups from the **Cost Management** card in the [Azure app](https://azure.microsoft.com/get-started/azure-portal/mobile-app/).
164
164
165
165
1. Navigate to any subscription or resource group.
166
166
1. Find the **Cost Management** card and tap **More**.
167
167
1. Budgets load below the **Current cost** card. They're sorted by descending order of usage.
168
168
169
+
> [!NOTE]
170
+
> Currently, the Azure mobile app only supports the subscription and resource group scopes for budgets.
171
+
169
172
:::image type="content" source="./media/tutorial-acm-create-budgets/azure-app-budgets.png" alt-text="Screenshot showing budgets in the Azure app." lightbox="./media/tutorial-acm-create-budgets/azure-app-budgets.png" :::
*[Customer-managed key disk encryption](disk-encryption.md)
42
42
43
-
HDInsight will automatically renew the certificates for the managed identities you use for these scenarios. However, there is a limitation when multiple different managed identities are used for long running clusters, the certificate renewal may not work as expected for all of the managed identities. Due to this limitation, if you are planning to use long running clusters (e.g. more than 60 days), we recommend to use the same managed identity for all of the above scenarios.
43
+
HDInsight will automatically renew the certificates for the managed identities you use for these scenarios. However, there is a limitation when multiple different managed identities are used for long running clusters, the certificate renewal may not work as expected for all of the managed identities. Due to this limitation, we recommend to use the same managed identity for all of the above scenarios.
44
44
45
45
If you have already created a long running cluster with multiple different managed identities and are running into one of these issues:
46
46
* In ESP clusters, cluster services starts failing or scale up and other operations start failing with authentications errors.
0 commit comments