diff --git a/IdAceCodeEditor.sln b/IdAceCodeEditor.sln
index 2301311..5b54750 100644
--- a/IdAceCodeEditor.sln
+++ b/IdAceCodeEditor.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32228.430
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IdAceCodeEditor", "IdAceCodeEditor\IdAceCodeEditor.csproj", "{43C2BF53-26B0-4DF8-ADD3-C42F31DE4044}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IDAceCodeEditor", "IdAceCodeEditor\IDAceCodeEditor.csproj", "{43C2BF53-26B0-4DF8-ADD3-C42F31DE4044}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/IdAceCodeEditor/Config/appsettings.json b/IdAceCodeEditor/Config/appsettings.json
index af31fe6..221e122 100644
--- a/IdAceCodeEditor/Config/appsettings.json
+++ b/IdAceCodeEditor/Config/appsettings.json
@@ -1,19 +1,20 @@
{
"Frameworks": [
{
- "Name": ".NETCORE",
- "DisplayName": "ASP.NET Core",
+ "Name": "Asp.NetCore",
+ "DisplayName": "Asp.Net Core",
+ "Type": "Web",
"Samples": [
{
"Name": "Sign in users in webapp",
- "Type": "ASP.NETCOREWEB",
+ "PlatformType": "Web",
+ "Type": "Asp.NetCore",
"DisplayName": "An ASP.NET Core Web app signing-in users with the Microsoft identity platform in your organization",
"WorkingFolder": "1-WebApp-OIDC\\1-1-MyOrg",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Asp.Net Core" },
- { "Name": "Identity.Web" },
- { "Name": "Auth Code Flow" }
+ { "Name": "SignIn" },
+ { "Name": "Microsoft.Identity.Web" },
+ { "Name": "HybridFlow" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/tree/master/1-WebApp-OIDC/1-1-MyOrg",
@@ -94,13 +95,14 @@
},
{
"Name": "Web app caling graph API",
- "Type": "ASP.NETCOREWEB",
+ "PlatformType": "Web",
+ "Type": "Asp.NetCore",
"DisplayName": "Enable your ASP.NET Core web app to sign in users and call Microsoft Graph with the Microsoft identity platform",
"WorkingFolder": "2-WebApp-graph-user\\2-1-Call-MSGraph",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Asp.Net Core" },
- { "Name": "Identity.Web" },
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "Microsoft.Identity.Web" },
{ "Name": "Auth Code Flow" }
],
"GitHubRepoSettings": {
@@ -188,15 +190,132 @@
}
]
},
+ {
+ "Name": "Web app caling graph API(With Certificate)",
+ "PlatformType": "Web",
+ "Type": "Asp.NetCore",
+ "DisplayName": "Enable your ASP.NET Core web app to sign in users and call Microsoft Graph with the Microsoft identity platform(with Certificate)",
+ "WorkingFolder": "2-WebApp-graph-user\\2-6-Call-MSGraph - WithCert",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "WithCertificate" },
+ { "Name": "Microsoft.Identity.Web" },
+ { "Name": "Auth Code Flow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/idaceappdev/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/2-WebApp-graph-user/2-6-Call-MSGraph%20-%20WithCert/README.md",
+ "TutorialLink": "https://github.com/AzureAD/microsoft-identity-web/wiki/Using-certificates",
+ "ClonePath": "https://github.com/idaceappdev/active-directory-aspnetcore-webapp-openidconnect-v2.git",
+ "LocalPath": "ASP.NETCORE\\CallMsGraph"
+ },
+ "Projects": [
+ {
+ "Name": "Client Project",
+ "ProjectPath": "2-WebApp-graph-user\\2-6-Call-MSGraph - WithCert",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "WebApp-OpenIDConnect-DotNet-graph-v2",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Web",
+ "RedirectUri": "https://localhost:44321/signin-oidc",
+ "IsHybridFlow": "True",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+ "Certificate": {
+ "Type": "PemFile", // Values can be PfxFile,StoreWithThumbprint.StoreWithDN
+ "CertName": "TestCert.crt",
+ "PemName": "TestCert.pem",
+ "PfxName": "TestCert.pfx",
+ "Password": "password!",
+ "IsAddToStore": false,
+ "Issuer": "TestIssuer",
+ "Subject": "TestSubject"
+ },
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Type": "Scope"
+ }
+ ]
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "TenantId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "Certificate",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].Certificate.PfxFile",
+ "Destination": "ClientCertificates:0:CertificateDiskPath",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "password",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "password!",
+ "Destination": "ClientCertificates:0:CertificatePassword",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].Domain",
+ "Destination": "Domain",
+ "FileName": "appsettings.json"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "DotNetCore",
+ "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
+ },
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ },
{
"Name": "Webapp calling custom .NET core web API",
- "Type": "ASP.NETCOREWEB",
+ "Type": "Asp.NetCore",
+ "PlatformType": "Web",
"DisplayName": "How to secure an ASP.NET Core Web API with the Microsoft identity platform",
"WorkingFolder": "4-WebApp-your-API\\4-1-MyOrg",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Asp.Net Core" },
- { "Name": "Identity.Web" },
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "CallCustomApi" },
+ { "Name": "Microsoft.Identity.Web" },
{ "Name": "Auth Code Flow" }
],
"GitHubRepoSettings": {
@@ -366,41 +485,35 @@
"DownloadLink": "https://visualstudio.microsoft.com/downloads/"
}
]
- }
- ]
- },
- {
- "Name": ".NET Framework",
- "DisplayName": "ASP.NET framework",
- "Samples": [
+ },
{
- "Name": "Sign in users in webapp",
- "Type": "ASP.NETFRAMEWORK",
- "DisplayName": "Sign in a user in an ASP.NET Web App with OpenID Connect and the Microsoft identity platform",
- "WorkingFolder": "",
+ "Name": "Blazor Webapp calling custom ASP.NET core web API",
+ "Type": "Asp.NetCore",
+ "PlatformType": "Web",
+ "DisplayName": "Enable your Blazor Server to sign-in users and call Web API with the Microsoft identity platform",
+ "WorkingFolder": "WebApp-your-API\\MyOrg",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Asp.Net Framework" },
- { "Name": "OWIN" },
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
+ { "Name": "Microsoft.Identity.Web" },
{ "Name": "Auth Code Flow" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/AzureAdQuickstarts/AppModelv2-WebApp-OpenIDConnect-DotNet",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-asp-webapp",
- "ClonePath": "https://github.com/AzureADQuickStarts/AppModelv2-WebApp-OpenIDConnect-DotNet.git",
- "LocalPath": "ASP.NETFramework\\SignIn"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-server/tree/main/WebApp-your-API/MyOrg",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-server",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-server.git",
+ "LocalPath": "BlazorServer\\WebAppToAPI"
},
"Projects": [
{
- "Name": "Client Project",
- "ProjectPath": "AppModelv2-WebApp-OpenIDConnect-DotNet",
+ "Name": "API Project",
+ "ProjectPath": "WebApp-your-API\\MyOrg\\Service",
"Order": "0",
"PortalSettings": {
- "DisplayName": "Quickstart-AspNetWebApp",
+ "DisplayName": "ToDoListService-aspnetcore",
"SignInAudience": "AzureADMyOrg",
- "AppType": "Web",
- "RedirectUri": "https://localhost:44368/",
- "IsHybridFlow": "True",
+ "AppType": "Api",
+ "IsHybridFlow": "",
"IsDeviceCodeFlow": "",
"SecretName": "",
@@ -409,74 +522,63 @@
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"Type": "Scope"
}
]
}
+ ],
+ "PermissionScopes": [
+ {
+ "Value": "access_as_user",
+ "Type": "User",
+ "AdminConsentDisplayName": "Access ToDoListService-aspnetcore",
+ "UserConsentDisplayName": "Access ToDoListService-aspnetcore",
+ "AdminConsentDescription": "Allows the app to access ToDoListService-aspnetcore as the signed-in user.",
+ "UserConsentDescription": "Allow the application to access ToDoListService-aspnetcore on your behalf."
+ }
]
},
"ReplacementFields": [
{
"Name": "ClientId",
- "ReplacementType": "TXT",
+ "ReplacementType": "JSON",
"Section": "AzureAd",
"Format": "",
"Source": "persistdata:Projects[0].App.AppId",
- "Destination": "Enter_the_Application_Id_here",
- "FileName": "web.config"
+ "Destination": "ClientId",
+ "FileName": "appsettings.json"
},
{
"Name": "TenantId",
- "ReplacementType": "TXT",
- "Section": "",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
"Format": "",
"Source": "persistdata:Projects[0].TenantId",
- "Destination": "common",
- "FileName": "web.config"
+ "Destination": "TenantId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].Domain",
+ "Destination": "Domain",
+ "FileName": "appsettings.json"
}
]
- }
- ],
- "Prerequisites": [
- {
- "Name": "DotNetFramework",
- "DownloadLink": "https://docs.microsoft.com/en-us/dotnet/framework/install/guide-for-developers"
},
- {
- "Name": "VisualStudio",
- "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
- }
- ]
- },
- {
- "Name": "Web app caling graph API",
- "Type": "ASP.NETFRAMEWORK",
- "DisplayName": "Use OpenID Connect to sign in users to Microsoft identity platform and execute Microsoft Graph operations using incremental consent",
- "WorkingFolder": "",
- "Tags": [
- { "Name": "Web App" },
- { "Name": "Asp.Net Framework" },
- { "Name": "OWIN" },
- { "Name": "Auth Code Flow" }
- ],
- "GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-aspnet-webapp-openidconnect",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-asp-webapp",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-aspnet-webapp-openidconnect.git",
- "LocalPath": "ASP.NETFramework\\WebApp-Graph"
- },
- "Projects": [
{
"Name": "Client Project",
- "ProjectPath": "WebApp",
- "Order": "0",
+ "ProjectPath": "WebApp-your-API\\MyOrg\\Client",
+ "Order": "1",
"PortalSettings": {
- "DisplayName": "MailApp-openidconnect-v2",
- "SignInAudience": "AzureADandPersonalMicrosoftAccount",
+ "DisplayName": "WebApp-calls-API-blazor-server",
+ "SignInAudience": "AzureADMyOrg",
"AppType": "Web",
- "RedirectUri": "https://localhost:44326/",
- "IsHybridFlow": "",
+ "RedirectUri": "https://localhost:44318/signin-oidc",
+ "IsHybridFlow": "True",
"IsDeviceCodeFlow": "",
"SecretName": "mySecret",
@@ -485,53 +587,928 @@
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
- "Type": "Scope"
- },
- {
- "Id": "37f7f235-527c-4136-accd-4a02d197296e", //OpenId
- "Type": "Scope"
- },
- {
- "Id": "14dad69e-099b-42c9-810b-d002981feec1", //profile
- "Type": "Scope"
- },
- {
- "Id": "7427e0e9-2fba-42fe-b0c0-848c9e6a8182", //offline_access
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"Type": "Scope"
- },
+ }
+ ]
+
+ },
+ {
+ "ResourceAppId": "persistdata:Projects[0].App.AppId",
+ "ResourceAccesss": [
{
- "Id": "570282fd-fa5c-430d-a7fd-fc8dc98a9dca", //Mail.Read
+ "Id": "persistdata:Projects[0].PermissionScopes[0].Id",
"Type": "Scope"
}
]
+
}
]
},
"ReplacementFields": [
{
"Name": "ClientId",
- "ReplacementType": "TXT",
+ "ReplacementType": "JSON",
"Section": "AzureAd",
- "Source": "persistdata:Projects[0].App.AppId",
- "Destination": "[Enter your client ID, as obtained from the app registration portal]",
- "FileName": "web.config"
+ "Source": "persistdata:Projects[1].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "TenantId",
+ "Section": "AzureAd",
+ "ReplacementType": "JSON",
+ "Source": "persistdata:Projects[1].TenantId",
+ "Destination": "TenantId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "Section": "AzureAd",
+ "ReplacementType": "JSON",
+ "Source": "persistdata:Projects[1].Domain",
+ "Destination": "Domain",
+ "FileName": "appsettings.json"
},
{
"Name": "ClientSecret",
- "ReplacementType": "TXT",
- "Section": "",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "[Enter your client secret, as obtained from the app registration portal]",
- "FileName": "web.config"
- }
+ "Section": "AzureAd",
+ "ReplacementType": "JSON",
+ "Source": "persistdata:Projects[1].SecretText",
+ "Destination": "ClientSecret",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "TodoListScopes",
+ "Section": "TodoList",
+ "ReplacementType": "JSON",
+ "Format": "api://{0}/access_as_user",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "TodoListScope",
+ "FileName": "appsettings.json"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "DotNetCore",
+ "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
+ },
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ },
+ {
+ "Name": "SPA calling .NET core API",
+ "Type": "Asp.NetCore",
+ "PlatformType": "Web",
+ "DisplayName": "Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory and call a .NET Core web API",
+ "WorkingFolder": "3-Authorization-II\\1-call-api",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
+ { "Name": "Microsoft.Identity.Web" },
+ { "Name": "MSAL.Angular" },
+ { "Name": "PKCE" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/tree/main/3-Authorization-II/1-call-api",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/single-page-app-quickstart?pivots=devlang-angular",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git",
+ "LocalPath": "Angular\\SpaCallingGraph"
+ },
+ "Projects": [
+ {
+ "Name": "API Project",
+ "ProjectPath": "3-Authorization-II\\1-call-api",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "msal-dotnet-api",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Api",
+ "RedirectUri": "",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Type": "Scope"
+ }
+ ]
+ }
+ ],
+ "PermissionScopes": [
+ {
+ "Value": "access_as_user",
+ "Type": "User",
+ "AdminConsentDisplayName": "Access msal-dotnet-api",
+ "UserConsentDisplayName": "Access msal-dotnet-api",
+ "AdminConsentDescription": "Allows the app to access msal-dotnet-api as the signed-in user",
+ "UserConsentDescription": "Allow the application to access msal-dotnet-api on your behalf."
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "API\\TodoListAPI\\appsettings.json"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "TenantId",
+ "FileName": "API\\TodoListAPI\\appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].Domain",
+ "Destination": "Domain",
+ "FileName": "API\\TodoListAPI\\appsettings.json"
+ }
+ ]
+ },
+ {
+ "Name": "Client Project",
+ "ProjectPath": "3-Authorization-II\\1-call-api",
+ "Order": "1",
+ "PortalSettings": {
+ "DisplayName": "msal-angular-spa",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Spa",
+ "RedirectUri": "http://localhost:4200/",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Type": "Scope"
+ }
+ ]
+ },
+ {
+ "ResourceAppId": "persistdata:Projects[0].App.AppId",
+ "ResourceAccesss": [
+ {
+ "Id": "persistdata:Projects[0].PermissionScopes[0].Id",
+ "Type": "Scope"
+ }
+ ]
+
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "TXT",
+ "Format": "",
+ "Source": "persistdata:Projects[1].App.AppId",
+ "Destination": "Enter_the_Application_Id_Here",
+ "FileName": "SPA\\src\\app\\auth-config.ts"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "TXT",
+ "Format": "",
+ "Source": "persistdata:Projects[1].TenantId",
+ "Destination": "Enter_the_Tenant_Info_Here",
+ "FileName": "SPA\\src\\app\\auth-config.ts"
+ },
+ //{
+ // "Name": "redirectURi",
+ // "ReplacementType": "TXT",
+ // "Format": "",
+ // "Source": "'https://localhost:4200/'",
+ // "Destination": "'/'",
+ // "FileName": "SPA\\src\\app\\auth-config.ts"
+ //},
+ {
+ "Name": "ApiScope",
+ "ReplacementType": "TXT",
+ "Format": "api://{0}/access_as_user",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "Enter_the_Web_Api_Scope_here",
+ "FileName": "SPA\\src\\app\\auth-config.ts"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "NPM",
+ "DownloadLink": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
+ }
+ ]
+ },
+ {
+ "Name": "WPF app calling ASP.NET core API",
+ "Type": "Asp.NetCore",
+ "PlatformType": "Web",
+ "DisplayName": "Sign-in a user with the Microsoft Identity Platform in a WPF Desktop application and call an ASP.NET Core Web API",
+ "WorkingFolder": "1. Desktop app calls Web API",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
+ { "Name": "MSAL.NET" },
+ { "Name": "Microsoft.Identity.Web" },
+ { "Name": "WAM" },
+ { "Name": "System browser" },
+ { "Name": "PKCE" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore-v2/blob/master/1.%20Desktop%20app%20calls%20Web%20API/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-windows-desktop",
+ "ClonePath": "https://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore-v2.git",
+ "LocalPath": "WPF\\CallCustomAPI"
+ },
+ "Projects": [
+ {
+ "Name": "API Project",
+ "ProjectPath": "1. Desktop app calls Web API\\TodoListService",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "TodoListService",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Api",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Type": "Scope"
+ }
+ ]
+ }
+ ],
+ "PermissionScopes": [
+ {
+ "Value": "access_as_user",
+ "Type": "User",
+ "AdminConsentDisplayName": "Access TodoListService (active-directory-dotnet-native-aspnetcore-v2)",
+ "UserConsentDisplayName": "Access TodoListService (active-directory-dotnet-native-aspnetcore-v2)",
+ "AdminConsentDescription": "Allows the app to access TodoListService (active-directory-dotnet-native-aspnetcore-v2) as the signed-in user.",
+ "UserConsentDescription": "Allow the application to access TodoListService (active-directory-dotnet-native-aspnetcore-v2) on your behalf."
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].Domain",
+ "Destination": "Domain",
+ "FileName": "appsettings.json"
+ }
+ ]
+ },
+ {
+ "Name": "Client Project",
+ "ProjectPath": "1. Desktop app calls Web API\\TodoListClient",
+ "Order": "1",
+ "PortalSettings": {
+ "DisplayName": "TodoListClient",
+ "SignInAudience": "AzureADandPersonalMicrosoftAccount",
+ "AppType": "Desktop",
+ "RedirectUri": "http://localhost",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "id": "b340eb25-3456-403f-be2f-af7a0d370277",
+ "Type": "Scope"
+ }
+ ]
+ },
+ {
+ "ResourceAppId": "persistdata:Projects[0].App.AppId",
+ "ResourceAccesss": [
+ {
+ "Id": "persistdata:Projects[0].PermissionScopes[0].Id",
+ "Type": "Scope"
+ }
+ ]
+
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "TXT",
+ "Source": "persistdata:Projects[1].App.AppId",
+ "Destination": "[Enter_client_ID_Of_TodoListClient-v2_from_Azure_Portal,_e.g._784d7a5a-4a49-4d1d-b328-5812070f366f]",
+ "FileName": "App.config"
+ },
+ {
+ "Name": "TodoListScopes",
+ "ReplacementType": "TXT",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "[Enter_client_ID_Of_TodoListService-v2_from_Azure_Portal,_e.g._2ec40e65-ba09-4853-bcde-bcb60029e596]",
+ "FileName": "App.config"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name": "Asp.NetFramework",
+ "Type": "Web",
+ "DisplayName": "ASP.NET framework",
+ "Samples": [
+ {
+ "Name": "Sign in users in webapp",
+ "Type": "Asp.NetFramework",
+ "PlatformType": "Web",
+ "DisplayName": "Sign in a user in an ASP.NET Web App with OpenID Connect and the Microsoft identity platform",
+ "WorkingFolder": "",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "Microsoft.Owin" },
+ { "Name": "Hybridflow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/AzureAdQuickstarts/AppModelv2-WebApp-OpenIDConnect-DotNet",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-asp-webapp",
+ "ClonePath": "https://github.com/AzureADQuickStarts/AppModelv2-WebApp-OpenIDConnect-DotNet.git",
+ "LocalPath": "ASP.NETFramework\\SignIn"
+ },
+ "Projects": [
+ {
+ "Name": "Client Project",
+ "ProjectPath": "AppModelv2-WebApp-OpenIDConnect-DotNet",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "Quickstart-AspNetWebApp",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Web",
+ "RedirectUri": "https://localhost:44368/",
+ "IsHybridFlow": "True",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Type": "Scope"
+ }
+ ]
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "TXT",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "Enter_the_Application_Id_here",
+ "FileName": "web.config"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Format": "",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "common",
+ "FileName": "web.config"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "DotNetFramework",
+ "DownloadLink": "https://docs.microsoft.com/en-us/dotnet/framework/install/guide-for-developers"
+ },
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ },
+ {
+ "Name": "Web app caling graph API",
+ "Type": "Asp.NetFramework",
+ "PlatformType": "Web",
+ "DisplayName": "Use OpenID Connect to sign in users to Microsoft identity platform and execute Microsoft Graph operations using incremental consent",
+ "WorkingFolder": "",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "Microsoft.Owin" },
+ { "Name": "Auth Code Flow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-aspnet-webapp-openidconnect",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-asp-webapp",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-aspnet-webapp-openidconnect.git",
+ "LocalPath": "ASP.NETFramework\\WebApp-Graph"
+ },
+ "Projects": [
+ {
+ "Name": "Client Project",
+ "ProjectPath": "WebApp",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "MailApp-openidconnect-v2",
+ "SignInAudience": "AzureADandPersonalMicrosoftAccount",
+ "AppType": "Web",
+ "RedirectUri": "https://localhost:44326/",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "mySecret",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Type": "Scope"
+ },
+ {
+ "Id": "37f7f235-527c-4136-accd-4a02d197296e", //OpenId
+ "Type": "Scope"
+ },
+ {
+ "Id": "14dad69e-099b-42c9-810b-d002981feec1", //profile
+ "Type": "Scope"
+ },
+ {
+ "Id": "7427e0e9-2fba-42fe-b0c0-848c9e6a8182", //offline_access
+ "Type": "Scope"
+ },
+ {
+ "Id": "570282fd-fa5c-430d-a7fd-fc8dc98a9dca", //Mail.Read
+ "Type": "Scope"
+ }
+ ]
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "TXT",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "[Enter your client ID, as obtained from the app registration portal]",
+ "FileName": "web.config"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "[Enter your client secret, as obtained from the app registration portal]",
+ "FileName": "web.config"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "DotNetFramework",
+ "DownloadLink": ""
+ },
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name": "BlazorServer",
+ "Type": "Web",
+ "DisplayName": "Blazor webapp",
+ "Samples": [
+ {
+ "Name": "Sign In Users",
+ "Type": "BlazorServer",
+ "PlatformType": "Web",
+ "DisplayName": "Enable your Blazor WebAssembly to sign-in users with the Microsoft identity platform",
+ "WorkingFolder": "WebApp-OIDC\\MyOrg",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "Microsoft.Identity.Web" },
+ { "Name": "HybridFlow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-server/tree/main/WebApp-OIDC/MyOrg",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-server",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-server.git",
+ "LocalPath": "BlazorServer\\SignIn"
+ },
+ "Projects": [
+ {
+ "Name": "Client Project",
+ "ProjectPath": "WebApp-OIDC\\MyOrg",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "WebApp-blazor-server",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Web",
+ "RedirectUri": "https://localhost:44318/ https://localhost:44318/signin-oidc",
+ "IsHybridFlow": "True",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Type": "Scope"
+ }
+ ]
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "blazorserver-singleOrg\\appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].Domain",
+ "Destination": "Domain",
+ "FileName": "blazorserver-singleOrg\\appsettings.json"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "TenantId",
+ "FileName": "blazorserver-singleOrg\\appsettings.json"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "DotNetCore",
+ "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
+ },
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ },
+ {
+ "Name": "Call Microsoft Graph",
+ "Type": "BlazorServer",
+ "PlatformType": "Web",
+ "DisplayName": "Call Microsoft Graph on behalf-of the signed-in users in your Blazor Server Application",
+ "WorkingFolder": "WebApp-graph-user\\Call-MSGraph",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "Microsoft.Identity.Web" },
+ { "Name": "Auth Code flow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-server/tree/main/WebApp-graph-user/Call-MSGraph",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-server",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-server.git",
+ "LocalPath": "BlazorServer\\WebAppGraph"
+ },
+ "Projects": [
+ {
+ "Name": "Client Project",
+ "ProjectPath": "WebApp-graph-user\\Call-MSGraph",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "WebApp-blazor-server-graph",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Web",
+ "RedirectUri": "https://localhost:44318/ https://localhost:44318/signin-oidc",
+ "IsHybridFlow": "True",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "mySecret",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Type": "Scope"
+ }
+ ]
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].Domain",
+ "Destination": "Domain",
+ "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "TenantId",
+ "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "ClientSecret",
+ "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "DotNetCore",
+ "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
+ },
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ },
+ {
+ "Name": "Blazor Webapp calling custom ASP.NET core web API",
+ "Type": "BlazorServer",
+ "PlatformType": "Web",
+ "DisplayName": "Enable your Blazor Server to sign-in users and call Web API with the Microsoft identity platform",
+ "WorkingFolder": "WebApp-your-API\\MyOrg",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
+ { "Name": "Microsoft.Identity.Web" },
+ { "Name": "Auth Code Flow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-server/tree/main/WebApp-your-API/MyOrg",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-server",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-server.git",
+ "LocalPath": "BlazorServer\\WebAppToAPI"
+ },
+ "Projects": [
+ {
+ "Name": "API Project",
+ "ProjectPath": "WebApp-your-API\\MyOrg\\Service",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "ToDoListService-aspnetcore",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Api",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Type": "Scope"
+ }
+ ]
+ }
+ ],
+ "PermissionScopes": [
+ {
+ "Value": "access_as_user",
+ "Type": "User",
+ "AdminConsentDisplayName": "Access ToDoListService-aspnetcore",
+ "UserConsentDisplayName": "Access ToDoListService-aspnetcore",
+ "AdminConsentDescription": "Allows the app to access ToDoListService-aspnetcore as the signed-in user.",
+ "UserConsentDescription": "Allow the application to access ToDoListService-aspnetcore on your behalf."
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "TenantId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Format": "",
+ "Source": "persistdata:Projects[0].Domain",
+ "Destination": "Domain",
+ "FileName": "appsettings.json"
+ }
+ ]
+ },
+ {
+ "Name": "Client Project",
+ "ProjectPath": "WebApp-your-API\\MyOrg\\Client",
+ "Order": "1",
+ "PortalSettings": {
+ "DisplayName": "WebApp-calls-API-blazor-server",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Web",
+ "RedirectUri": "https://localhost:44318/signin-oidc",
+ "IsHybridFlow": "True",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "mySecret",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Type": "Scope"
+ }
+ ]
+
+ },
+ {
+ "ResourceAppId": "persistdata:Projects[0].App.AppId",
+ "ResourceAccesss": [
+ {
+ "Id": "persistdata:Projects[0].PermissionScopes[0].Id",
+ "Type": "Scope"
+ }
+ ]
+
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "JSON",
+ "Section": "AzureAd",
+ "Source": "persistdata:Projects[1].App.AppId",
+ "Destination": "ClientId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "TenantId",
+ "Section": "AzureAd",
+ "ReplacementType": "JSON",
+ "Source": "persistdata:Projects[1].TenantId",
+ "Destination": "TenantId",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "Domain",
+ "Section": "AzureAd",
+ "ReplacementType": "JSON",
+ "Source": "persistdata:Projects[1].Domain",
+ "Destination": "Domain",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "ClientSecret",
+ "Section": "AzureAd",
+ "ReplacementType": "JSON",
+ "Source": "persistdata:Projects[1].SecretText",
+ "Destination": "ClientSecret",
+ "FileName": "appsettings.json"
+ },
+ {
+ "Name": "TodoListScopes",
+ "Section": "TodoList",
+ "ReplacementType": "JSON",
+ "Format": "api://{0}/access_as_user",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "TodoListScope",
+ "FileName": "appsettings.json"
+ }
]
}
],
"Prerequisites": [
{
- "Name": "DotNetFramework",
- "DownloadLink": ""
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "DotNetCore",
+ "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
},
{
"Name": "VisualStudio",
@@ -542,17 +1519,18 @@
]
},
{
- "Name": "Java Spring",
+ "Name": "JavaSpring",
+ "Type": "Web",
"DisplayName": "Java Spring",
"Samples": [
{
"Name": "Sign in users in webapp",
- "Type": "Java Spring",
+ "Type": "JavaSpring",
+ "PlatformType": "Web",
"DisplayName": "Enable your Java Spring Boot web app to sign in users on your Azure Active Directory tenant with the Microsoft identity platform",
"WorkingFolder": "4. Spring Framework Web App Tutorial\\1-Authentication\\sign-in",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Java Spring" },
+ { "Name": "SignIn" },
{ "Name": "Spring Boot Starter" },
{ "Name": "Auth Code Flow" }
],
@@ -630,13 +1608,14 @@
]
},
{
- "Name": "Sign in users in webapp",
- "Type": "Java Spring",
+ "Name": "Sign in users in webapp an call Graph API",
+ "Type": "JavaSpring",
+ "PlatformType": "Web",
"DisplayName": "Enable your Java Spring Boot web app to sign in users and call Microsoft Graph with the Microsoft identity platform",
"WorkingFolder": "4. Spring Framework Web App Tutorial\\2-Authorization-I\\call-graph",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Java Spring" },
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
{ "Name": "Spring Boot Starter" },
{ "Name": "Auth Code Flow" }
],
@@ -716,46 +1695,223 @@
]
},
{
- "Name": "Java Servlets",
- "DisplayName": "Java Servlets",
+ "Name": "JavaServlet",
+ "Type": "Web",
+ "DisplayName": "Java Servlets",
+ "Samples": [
+ {
+ "Name": "Sign in users in webapp",
+ "Type": "JavaServlet",
+ "PlatformType": "Web",
+ "DisplayName": "Enable your Java Servlet web app to sign in users to your Azure Active Directory tenant with the Microsoft identity platform",
+ "WorkingFolder": "3. Java Servlet Web App Tutorial\\1-Authentication\\sign-in",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "Msal.Java" },
+ { "Name": "Auth Code Flow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-msal-java-samples/tree/main/3.%20Java%20Servlet%20Web%20App%20Tutorial/1-Authentication/sign-in/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?toc=%2Fazure%2Factive-directory%2Fdevelop%2Ftoc.json&bc=%2Fazure%2Factive-directory%2Fdevelop%2Fbreadcrumb%2Ftoc.json",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-msal-java-samples.git",
+ "LocalPath": "Servlet\\SignIn"
+ },
+ "Projects": [
+ {
+ "Name": "Client Project",
+ "ProjectPath": "3. Java Servlet Web App Tutorial\\1-Authentication\\sign-in",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "java-servlet-webapp-authentication",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Web",
+ "RedirectUri": "http://localhost:8080/msal4j-servlet-auth/auth/redirect",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "appsecret",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Type": "Scope"
+ }
+ ]
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "{enter-your-client-id-here}",
+ "FileName": "src/main/resources/authentication.properties"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Format": "",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "{enter-your-tenant-id-here}",
+ "FileName": "src/main/resources/authentication.properties"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "{enter-your-client-secret-here}",
+ "FileName": "src/main/resources/authentication.properties"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "Java",
+ "DownloadLink": "https://www.oracle.com/java/technologies/downloads/"
+ },
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ }
+ ]
+ },
+ {
+ "Name": "Sign in users in webapp and call graph",
+ "Type": "JavaServlet",
+ "PlatformType": "Web",
+ "DisplayName": "Enable your Java Servlet web app to sign in users and call Microsoft Graph with the Microsoft identity platform",
+ "WorkingFolder": "3. Java Servlet Web App Tutorial\\2-Authorization-I\\call-graph",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "Msal.Java" },
+ { "Name": "Auth Code Flow" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-msal-java-samples/tree/main/3.%20Java%20Servlet%20Web%20App%20Tutorial/2-Authorization-I/call-graph/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?toc=%2Fazure%2Factive-directory%2Fdevelop%2Ftoc.json&bc=%2Fazure%2Factive-directory%2Fdevelop%2Fbreadcrumb%2Ftoc.json",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-msal-java-samples.git",
+ "LocalPath": "Servlet\\CallGraph"
+ },
+ "Projects": [
+ {
+ "Name": "Client Project",
+ "ProjectPath": "3. Java Servlet Web App Tutorial\\2-Authorization-I\\call-graph",
+ "Order": "0",
+ "PortalSettings": {
+ "DisplayName": "java-servlet-webapp-call-graph",
+ "SignInAudience": "AzureADMyOrg",
+ "AppType": "Web",
+ "RedirectUri": "http://localhost:8080/msal4j-servlet-auth/auth/redirect",
+ "IsHybridFlow": "",
+ "IsDeviceCodeFlow": "",
+ "SecretName": "appsecret",
+
+ "RequiredResourceAccesss": [
+ {
+ "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ "ResourceAccesss": [
+ {
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Type": "Scope"
+ }
+ ]
+ }
+ ]
+ },
+ "ReplacementFields": [
+ {
+ "Name": "ClientId",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Format": "",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "{enter-your-client-id-here}",
+ "FileName": "src/main/resources/authentication.properties"
+ },
+ {
+ "Name": "TenantId",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Format": "",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "{enter-your-tenant-id-here}",
+ "FileName": "src/main/resources/authentication.properties"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "TXT",
+ "Section": "",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "{enter-your-client-secret-here}",
+ "FileName": "src/main/resources/authentication.properties"
+ }
+ ]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "Java",
+ "DownloadLink": "https://www.oracle.com/java/technologies/downloads/"
+ },
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name": "PythonFlask",
+ "Type": "Web",
+ "DisplayName": "Python",
"Samples": [
{
- "Name": "Sign in users in webapp",
- "Type": "Java Servlets",
- "DisplayName": "Enable your Java Servlet web app to sign in users to your Azure Active Directory tenant with the Microsoft identity platform",
- "WorkingFolder": "3. Java Servlet Web App Tutorial\\1-Authentication\\sign-in",
+ "Name": "Sign in users in python flask web app",
+ "Type": "PythonFlask",
+ "PlatformType": "Web",
+ "DisplayName": "Enable your Python Flask webapp to sign in users to your Azure Active Directory tenant with the Microsoft identity platform",
+ "WorkingFolder": "",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Java Servlets" },
- { "Name": "Msal Java" },
+ { "Name": "SignIn" },
+ { "Name": "MSAL.Python" },
{ "Name": "Auth Code Flow" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-msal-java-samples/tree/main/3.%20Java%20Servlet%20Web%20App%20Tutorial/1-Authentication/sign-in/README.md",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?toc=%2Fazure%2Factive-directory%2Fdevelop%2Ftoc.json&bc=%2Fazure%2Factive-directory%2Fdevelop%2Fbreadcrumb%2Ftoc.json",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-msal-java-samples.git",
- "LocalPath": "Servlet\\SignIn"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-python-flask-webapp-authentication",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-python-token-cache-serialization",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-python-flask-webapp-authentication.git",
+ "LocalPath": "PythonFlask\\SignIn"
},
"Projects": [
{
"Name": "Client Project",
- "ProjectPath": "3. Java Servlet Web App Tutorial\\1-Authentication\\sign-in",
+ "ProjectPath": "",
"Order": "0",
"PortalSettings": {
- "DisplayName": "java-servlet-webapp-authentication",
+ "DisplayName": "python-flask-webapp-auth-my-tenant",
"SignInAudience": "AzureADMyOrg",
"AppType": "Web",
- "RedirectUri": "http://localhost:8080/msal4j-servlet-auth/auth/redirect",
+ "RedirectUri": "https://127.0.0.1:5000/auth/redirect",
"IsHybridFlow": "",
"IsDeviceCodeFlow": "",
- "SecretName": "appsecret",
+ "SecretName": "mysecret",
"RequiredResourceAccesss": [
{
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"Type": "Scope"
}
]
@@ -765,71 +1921,72 @@
"ReplacementFields": [
{
"Name": "ClientId",
- "ReplacementType": "TXT",
- "Section": "",
- "Format": "",
+ "ReplacementType": "JSON",
+ "Section": "client",
"Source": "persistdata:Projects[0].App.AppId",
- "Destination": "{enter-your-client-id-here}",
- "FileName": "src/main/resources/authentication.properties"
+ "Destination": "client_id",
+ "FileName": "aad.config.json"
},
{
"Name": "TenantId",
- "ReplacementType": "TXT",
- "Section": "",
- "Format": "",
+ "ReplacementType": "JSON",
+ "Section": "client",
+ "Format": "https://login.microsoftonline.com/{0}",
"Source": "persistdata:Projects[0].TenantId",
- "Destination": "{enter-your-tenant-id-here}",
- "FileName": "src/main/resources/authentication.properties"
+ "Destination": "authority",
+ "FileName": "aad.config.json"
},
{
"Name": "ClientSecret",
- "ReplacementType": "TXT",
- "Section": "",
+ "ReplacementType": "JSON",
+ "Section": "client",
+ "Format": "",
"Source": "persistdata:Projects[0].SecretText",
- "Destination": "{enter-your-client-secret-here}",
- "FileName": "src/main/resources/authentication.properties"
+ "Destination": "client_credential",
+ "FileName": "aad.config.json"
}
]
}
],
"Prerequisites": [
- {
- "Name": "Java",
- "DownloadLink": "https://www.oracle.com/java/technologies/downloads/"
- },
{
"Name": "VSCode",
"DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "Python",
+ "DownloadLink": "https://www.python.org/downloads/release/python-380/"
}
]
},
{
- "Name": "Sign in users in webapp and call graph",
- "Type": "Java Servlets",
- "DisplayName": "Enable your Java Servlet web app to sign in users and call Microsoft Graph with the Microsoft identity platform",
- "WorkingFolder": "3. Java Servlet Web App Tutorial\\2-Authorization-I\\call-graph",
+ "Name": "Python flask web app calling graph API",
+ "Type": "PythonFlask",
+ "PlatformType": "Web",
+ "DisplayName": "This sample demonstrates a Python web application calling a Microsoft Graph that is secured using Azure Active Directory.",
+ "WorkingFolder": "",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Java Servlets" },
- { "Name": "Msal Java" },
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "MSAL Python" },
{ "Name": "Auth Code Flow" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-msal-java-samples/tree/main/3.%20Java%20Servlet%20Web%20App%20Tutorial/2-Authorization-I/call-graph/README.md",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?toc=%2Fazure%2Factive-directory%2Fdevelop%2Ftoc.json&bc=%2Fazure%2Factive-directory%2Fdevelop%2Fbreadcrumb%2Ftoc.json",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-msal-java-samples.git",
- "LocalPath": "Servlet\\CallGraph"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-python-webapp",
+ "TutorialLink": "https://docs.microsoft.com/en-us/samples/azure-samples/ms-identity-python-webapp/ms-identity-python-webapp/",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-python-webapp.git",
+ "LocalPath": "PythonFlask\\CallGraphAPI"
},
"Projects": [
{
"Name": "Client Project",
- "ProjectPath": "3. Java Servlet Web App Tutorial\\2-Authorization-I\\call-graph",
+ "ProjectPath": "",
"Order": "0",
"PortalSettings": {
- "DisplayName": "java-servlet-webapp-call-graph",
- "SignInAudience": "AzureADMyOrg",
+ "DisplayName": "python-webapp",
+ "SignInAudience": "AzureADandPersonalMicrosoftAccount",
"AppType": "Web",
- "RedirectUri": "http://localhost:8080/msal4j-servlet-auth/auth/redirect",
+ "RedirectUri": "http://localhost:5000/getAToken",
"IsHybridFlow": "",
"IsDeviceCodeFlow": "",
"SecretName": "appsecret",
@@ -839,7 +1996,7 @@
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "id": "b340eb25-3456-403f-be2f-af7a0d370277",
"Type": "Scope"
}
]
@@ -850,86 +2007,78 @@
{
"Name": "ClientId",
"ReplacementType": "TXT",
- "Section": "",
- "Format": "",
+ "Section": "client",
"Source": "persistdata:Projects[0].App.AppId",
- "Destination": "{enter-your-client-id-here}",
- "FileName": "src/main/resources/authentication.properties"
- },
- {
- "Name": "TenantId",
- "ReplacementType": "TXT",
- "Section": "",
- "Format": "",
- "Source": "persistdata:Projects[0].TenantId",
- "Destination": "{enter-your-tenant-id-here}",
- "FileName": "src/main/resources/authentication.properties"
+ "Destination": "Enter_the_Application_Id_here",
+ "FileName": "app_config.py"
},
{
"Name": "ClientSecret",
"ReplacementType": "TXT",
- "Section": "",
+ "Section": "client",
+ "Format": "",
"Source": "persistdata:Projects[0].SecretText",
- "Destination": "{enter-your-client-secret-here}",
- "FileName": "src/main/resources/authentication.properties"
+ "Destination": "Enter_the_Client_Secret_Here",
+ "FileName": "app_config.py"
}
]
}
],
"Prerequisites": [
- {
- "Name": "Java",
- "DownloadLink": "https://www.oracle.com/java/technologies/downloads/"
- },
{
"Name": "VSCode",
"DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "Python",
+ "DownloadLink": "https://www.python.org/downloads/release/python-380/"
}
]
}
]
},
{
- "Name": "Blazor WASM",
- "DisplayName": "Blazor Web Assemblies",
+ "Name": "NodeJs",
+ "Type": "Web",
+ "DisplayName": "Node.js",
"Samples": [
{
"Name": "Sign In Users",
- "Type": "BlazorWASM",
- "DisplayName": "Enable your Blazor WebAssembly to sign-in users with the Microsoft identity platform",
- "WorkingFolder": "WebApp-OIDC\\MyOrg",
+ "Type": "NodeJs",
+ "PlatformType": "Web",
+ "DisplayName": "A Node.js & Express web app authenticating users against Azure AD with MSAL Nod",
+ "WorkingFolder": "1-Authentication\\1-sign-in",
"Tags": [
- { "Name": "SPA" },
- { "Name": "Blazor WASM" },
- { "Name": "MSAL JS" },
- { "Name": "PKCE" }
+ { "Name": "SignIn" },
+ { "Name": "Msal.NodeJs" },
+ { "Name": "Auth Code Flow" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-wasm/blob/main/WebApp-OIDC/MyOrg/README.md",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-webassembly",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-wasm.git",
- "LocalPath": "BlazorWASM\\SignIn"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial/blob/main/1-Authentication/1-sign-in/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial.git",
+ "LocalPath": "NodeJS\\SignIn"
},
"Projects": [
{
"Name": "Client Project",
- "ProjectPath": "WebApp-OIDC\\MyOrg",
+ "ProjectPath": "1-Authentication\\1-sign-in",
"Order": "0",
"PortalSettings": {
- "DisplayName": "WebApp-blazor-wasm",
+ "DisplayName": "msal-node-webapp",
"SignInAudience": "AzureADMyOrg",
"AppType": "Web",
- "RedirectUri": "https://localhost:44314/authentication/login-callback",
- "IsHybridFlow": "True",
+ "RedirectUri": "http://localhost:4000/redirect",
+ "IsHybridFlow": "",
"IsDeviceCodeFlow": "",
- "SecretName": "",
+ "SecretName": "appsecret",
"RequiredResourceAccesss": [
{
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"Type": "Scope"
}
]
@@ -939,21 +2088,35 @@
"ReplacementFields": [
{
"Name": "ClientId",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
+ "ReplacementType": "TXT",
"Format": "",
"Source": "persistdata:Projects[0].App.AppId",
- "Destination": "ClientId",
- "FileName": "blazorwasm-singleOrg\\wwwroot\\appsettings.json"
+ "Destination": "Enter_the_Application_Id_Here",
+ "FileName": "App\\appSettings.js"
},
{
- "Name": "Authority",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
+ "Name": "TenantId",
+ "ReplacementType": "TXT",
+ "Format": "",
"Source": "persistdata:Projects[0].TenantId",
- "Format": "https://login.microsoftonline.com/{0}",
- "Destination": "Authority",
- "FileName": "blazorwasm-singleOrg\\wwwroot\\appsettings.json"
+ "Destination": "Enter_the_Tenant_Info_Here",
+ "FileName": "App\\appSettings.js"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "TXT",
+ "Format": "",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "Enter_the_Client_Secret_Here",
+ "FileName": "App\\appSettings.js"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "TXT",
+ "Format": "",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "ENTER_YOUR_SECRET_HERE",
+ "FileName": "App\\app.js"
}
]
}
@@ -964,75 +2127,96 @@
"DownloadLink": "https://code.visualstudio.com/download"
},
{
- "Name": "DotNetCore",
- "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
- },
- {
- "Name": "VisualStudio",
- "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ "Name": "NPM",
+ "DownloadLink": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
}
]
},
{
- "Name": "Call Microsoft Graph",
- "Type": "BlazorWasm",
- "DisplayName": "Enable your Blazor WebAssembly to authorize users for calling Microsoft Graph",
- "WorkingFolder": "",
+ "Name": "Call MS Graph",
+ "Type": "NodeJs",
+ "PlatformType": "Web",
+ "DisplayName": "A Node.js & Express web app calling Microsoft Graph using MSAL Node",
+ "WorkingFolder": "2-Authorization\\1-call-graph",
"Tags": [
- { "Name": "SPA" },
- { "Name": "Blazor WASM" },
- { "Name": "MSAL JS" },
- { "Name": "PKCE" }
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "MSAL.NodeJs" },
+ { "Name": "Auth Code Flow" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-wasm/blob/main/WebApp-graph-user/Call-MSGraph/README.md",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-webassembly",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-wasm.git",
- "LocalPath": "BlazorWASM\\GraphAPI"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial/blob/main/2-Authorization/1-call-graph/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial.git",
+ "LocalPath": "NodeJS\\CallGraph"
},
"Projects": [
{
"Name": "Client Project",
- "ProjectPath": "WebApp-graph-user\\Call-MSGraph",
+ "ProjectPath": "2-Authorization\\1-call-graph",
"Order": "0",
"PortalSettings": {
- "DisplayName": "WebApp-blazor-wasm-graph",
+ "DisplayName": "msal-node-webapp",
"SignInAudience": "AzureADMyOrg",
"AppType": "Web",
- "RedirectUri": "https://localhost:44314/authentication/login-callback",
- "IsHybridFlow": "True",
+ "RedirectUri": "http://localhost:4000/redirect",
+ "IsHybridFlow": "",
"IsDeviceCodeFlow": "",
- "SecretName": "",
+ "SecretName": "appsecret",
"RequiredResourceAccesss": [
{
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"Type": "Scope"
}
]
+ },
+ {
+ "resourceAppId": "797f4846-ba00-4fd7-ba43-dac1f8f63013",
+ "resourceAccess": [
+ {
+ "id": "41094075-9dad-400e-a0bd-54e686782033",
+ "type": "Scope"
+ }
+ ]
}
]
},
"ReplacementFields": [
{
"Name": "ClientId",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
+ "ReplacementType": "TXT",
+ "Format": "",
"Source": "persistdata:Projects[0].App.AppId",
- "Destination": "ClientId",
- "FileName": "blazorwasm-calls-MS-graph\\wwwroot\\appsettings.json"
+ "Destination": "Enter_the_Application_Id_Here",
+ "FileName": "App\\appSettings.js"
},
{
- "Name": "Authority",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
- "Format": "https://login.microsoftonline.com/{0}",
+ "Name": "TenantId",
+ "ReplacementType": "TXT",
+ "Format": "",
"Source": "persistdata:Projects[0].TenantId",
- "Destination": "Authority",
- "FileName": "blazorwasm-calls-MS-graph\\wwwroot\\appsettings.json"
+ "Destination": "Enter_the_Tenant_Info_Here",
+ "FileName": "App\\appSettings.js"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "TXT",
+ "Format": "",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "Enter_the_Client_Secret_Here",
+ "FileName": "App\\appSettings.js"
+ },
+ {
+ "Name": "ClientSecret",
+ "ReplacementType": "TXT",
+ "Format": "",
+ "Source": "persistdata:Projects[0].SecretText",
+ "Destination": "ENTER_YOUR_SECRET_HERE",
+ "FileName": "App\\app.js"
}
]
}
@@ -1043,49 +2227,41 @@
"DownloadLink": "https://code.visualstudio.com/download"
},
{
- "Name": "DotNetCore",
- "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
- },
- {
- "Name": "VisualStudio",
- "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ "Name": "NPM",
+ "DownloadLink": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
}
]
- }
- ]
- },
- {
- "Name": "Blazor Server",
- "DisplayName": "Blazor webapp",
- "Samples": [
+ },
{
- "Name": "Sign In Users",
- "Type": "BlazorServer",
- "DisplayName": "Enable your Blazor WebAssembly to sign-in users with the Microsoft identity platform",
- "WorkingFolder": "WebApp-OIDC\\MyOrg",
+ "Name": "React(SPA) calling NodeJS API",
+ "Type": "NodeJs",
+ "PlatformType": "Web",
+ "DisplayName": "A React single-page application using MSAL React to authorize users for calling a protected web API on Azure Active Directory",
+ "WorkingFolder": "3-Authorization-II\\1-call-api",
"Tags": [
- { "Name": "Web App" },
- { "Name": "Blazor Server" },
- { "Name": "MSAL.Net" },
- { "Name": "Auth Code flow" }
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
+ { "Name": "MSAL.React" },
+ { "Name": "MSAL.Node" },
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-server/tree/main/WebApp-OIDC/MyOrg",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-server",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-server.git",
- "LocalPath": "BlazorServer\\SignIn"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-react-tutorial/tree/main/3-Authorization-II/1-call-api",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-react",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-react-tutorial.git",
+ "LocalPath": "React\\SpaCallinApi"
},
"Projects": [
{
- "Name": "Client Project",
- "ProjectPath": "WebApp-OIDC\\MyOrg",
+ "Name": "API Project",
+ "ProjectPath": "3-Authorization-II\\1-call-api\\API",
"Order": "0",
"PortalSettings": {
- "DisplayName": "WebApp-blazor-server",
+ "DisplayName": "msal-react-api",
"SignInAudience": "AzureADMyOrg",
- "AppType": "Web",
- "RedirectUri": "https://localhost:44318/ https://localhost:44318/signin-oidc",
- "IsHybridFlow": "True",
+ "AppType": "Api",
+ "RedirectUri": "",
+ "IsHybridFlow": "",
"IsDeviceCodeFlow": "",
"SecretName": "",
@@ -1094,133 +2270,103 @@
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"Type": "Scope"
}
]
}
+ ],
+ "PermissionScopes": [
+ {
+ "Value": "access_as_user",
+ "Type": "User",
+ "AdminConsentDisplayName": "Access msal-react-api",
+ "UserConsentDisplayName": "Access msal-react-api",
+ "AdminConsentDescription": "Allows the app to access msal-react-api as the signed-in user",
+ "UserConsentDescription": "Allow the application to access msal-react-api on your behalf."
+ }
]
},
"ReplacementFields": [
{
"Name": "ClientId",
"ReplacementType": "JSON",
- "Section": "AzureAd",
+ "Section": "credentials",
"Format": "",
"Source": "persistdata:Projects[0].App.AppId",
- "Destination": "ClientId",
- "FileName": "blazorserver-singleOrg\\appsettings.json"
- },
- {
- "Name": "Domain",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
- "Source": "persistdata:Projects[0].Domain",
- "Destination": "Domain",
- "FileName": "blazorserver-singleOrg\\appsettings.json"
+ "Destination": "clientID",
+ "FileName": "config.json"
},
{
"Name": "TenantId",
"ReplacementType": "JSON",
- "Section": "AzureAd",
+ "Section": "credentials",
+ "Format": "",
"Source": "persistdata:Projects[0].TenantId",
- "Destination": "TenantId",
- "FileName": "blazorserver-singleOrg\\appsettings.json"
+ "Destination": "tenantID",
+ "FileName": "config.json"
}
]
- }
- ],
- "Prerequisites": [
- {
- "Name": "VSCode",
- "DownloadLink": "https://code.visualstudio.com/download"
- },
- {
- "Name": "DotNetCore",
- "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
},
- {
- "Name": "VisualStudio",
- "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
- }
- ]
- },
- {
- "Name": "Call Microsoft Graph",
- "Type": "BlazorServer",
- "DisplayName": "Call Microsoft Graph on behalf-of the signed-in users in your Blazor Server Application",
- "WorkingFolder": "WebApp-graph-user\\Call-MSGraph",
- "Tags": [
- { "Name": "Web App" },
- { "Name": "Blazor Server" },
- { "Name": "MSAL.Net" },
- { "Name": "Auth Code flow" }
- ],
- "GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-server/tree/main/WebApp-graph-user/Call-MSGraph",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-server",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-server.git",
- "LocalPath": "BlazorServer\\WebAppGraph"
- },
- "Projects": [
{
"Name": "Client Project",
- "ProjectPath": "WebApp-graph-user\\Call-MSGraph",
- "Order": "0",
+ "ProjectPath": "3-Authorization-II\\1-call-api\\SPA",
+ "Order": "1",
"PortalSettings": {
- "DisplayName": "WebApp-blazor-server-graph",
+ "DisplayName": "msal-react-spa",
"SignInAudience": "AzureADMyOrg",
- "AppType": "Web",
- "RedirectUri": "https://localhost:44318/ https://localhost:44318/signin-oidc",
- "IsHybridFlow": "True",
+ "AppType": "Spa",
+ "RedirectUri": "http://localhost:3000/",
+ "IsHybridFlow": "",
"IsDeviceCodeFlow": "",
- "SecretName": "mySecret",
+ "SecretName": "",
"RequiredResourceAccesss": [
{
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Type": "Scope"
+ }
+ ]
+ },
+ {
+ "ResourceAppId": "persistdata:Projects[0].App.AppId",
+ "ResourceAccesss": [
+ {
+ "Id": "persistdata:Projects[0].PermissionScopes[0].Id",
"Type": "Scope"
}
]
+
}
]
},
"ReplacementFields": [
{
"Name": "ClientId",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
+ "ReplacementType": "TXT",
"Format": "",
- "Source": "persistdata:Projects[0].App.AppId",
- "Destination": "ClientId",
- "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
- },
- {
- "Name": "Domain",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
- "Source": "persistdata:Projects[0].Domain",
- "Destination": "Domain",
- "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
+ "Source": "persistdata:Projects[1].App.AppId",
+ "Destination": "Enter_the_Application_Id_Here",
+ "FileName": "src\\authConfig.js"
},
{
"Name": "TenantId",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
- "Source": "persistdata:Projects[0].TenantId",
- "Destination": "TenantId",
- "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
+ "ReplacementType": "TXT",
+ "Format": "",
+ "Source": "persistdata:Projects[1].TenantId",
+ "Destination": "Enter_the_Tenant_Info_Here",
+ "FileName": "src\\authConfig.js"
},
{
- "Name": "ClientSecret",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "ClientSecret",
- "FileName": "blazorserver-calls-MS-graph\\appsettings.json"
+ "Name": "ApiScope",
+ "ReplacementType": "TXT",
+ "Format": "api://{0}/access_as_user",
+ "Source": "persistdata:Projects[0].App.AppId",
+ "Destination": "Enter_the_Web_Api_Scope_Here",
+ "FileName": "src\\authConfig.js"
}
]
}
@@ -1231,42 +2377,46 @@
"DownloadLink": "https://code.visualstudio.com/download"
},
{
- "Name": "DotNetCore",
- "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
- },
- {
- "Name": "VisualStudio",
- "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ "Name": "NPM",
+ "DownloadLink": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
}
]
- },
+ }
+ ]
+ },
+ {
+ "Name": "BlasorWasm",
+ "Type": "Spa",
+ "DisplayName": "Blazor Web Assemblies",
+ "Samples": [
{
- "Name": "Blazor Webapp calling custom ASP.NET core web API",
- "Type": "BlazorServer",
- "DisplayName": "Enable your Blazor Server to sign-in users and call Web API with the Microsoft identity platform",
- "WorkingFolder": "WebApp-your-API\\MyOrg",
+ "Name": "Sign In Users",
+ "Type": "BlasorWasm",
+ "PlatformType": "Spa",
+ "DisplayName": "Enable your Blazor WebAssembly to sign-in users with the Microsoft identity platform",
+ "WorkingFolder": "WebApp-OIDC\\MyOrg",
"Tags": [
- { "Name": "Blazor Sever" },
- { "Name": "Asp.Net Core" },
- { "Name": "Identity.Web" },
- { "Name": "Auth Code Flow" }
+ { "Name": "SignIn" },
+ { "Name": "Microsoft.Authentication.WebAssembly.Msal" },
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-server/tree/main/WebApp-your-API/MyOrg",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-server",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-server.git",
- "LocalPath": "BlazorServer\\WebAppToAPI"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-wasm/blob/main/WebApp-OIDC/MyOrg/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-webassembly",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-wasm.git",
+ "LocalPath": "BlazorWASM\\SignIn"
},
"Projects": [
{
- "Name": "API Project",
- "ProjectPath": "WebApp-your-API\\MyOrg\\Service",
+ "Name": "Client Project",
+ "ProjectPath": "WebApp-OIDC\\MyOrg",
"Order": "0",
"PortalSettings": {
- "DisplayName": "ToDoListService-aspnetcore",
+ "DisplayName": "WebApp-blazor-wasm",
"SignInAudience": "AzureADMyOrg",
- "AppType": "Api",
- "IsHybridFlow": "",
+ "AppType": "Web",
+ "RedirectUri": "https://localhost:44314/authentication/login-callback",
+ "IsHybridFlow": "True",
"IsDeviceCodeFlow": "",
"SecretName": "",
@@ -1275,21 +2425,11 @@
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
"Type": "Scope"
}
]
}
- ],
- "PermissionScopes": [
- {
- "Value": "access_as_user",
- "Type": "User",
- "AdminConsentDisplayName": "Access ToDoListService-aspnetcore",
- "UserConsentDisplayName": "Access ToDoListService-aspnetcore",
- "AdminConsentDescription": "Allows the app to access ToDoListService-aspnetcore as the signed-in user.",
- "UserConsentDescription": "Allow the application to access ToDoListService-aspnetcore on your behalf."
- }
]
},
"ReplacementFields": [
@@ -1300,61 +2440,76 @@
"Format": "",
"Source": "persistdata:Projects[0].App.AppId",
"Destination": "ClientId",
- "FileName": "appsettings.json"
+ "FileName": "blazorwasm-singleOrg\\wwwroot\\appsettings.json"
},
{
- "Name": "TenantId",
+ "Name": "Authority",
"ReplacementType": "JSON",
"Section": "AzureAd",
- "Format": "",
"Source": "persistdata:Projects[0].TenantId",
- "Destination": "TenantId",
- "FileName": "appsettings.json"
- },
- {
- "Name": "Domain",
- "ReplacementType": "JSON",
- "Section": "AzureAd",
- "Format": "",
- "Source": "persistdata:Projects[0].Domain",
- "Destination": "Domain",
- "FileName": "appsettings.json"
+ "Format": "https://login.microsoftonline.com/{0}",
+ "Destination": "Authority",
+ "FileName": "blazorwasm-singleOrg\\wwwroot\\appsettings.json"
}
]
+ }
+ ],
+ "Prerequisites": [
+ {
+ "Name": "VSCode",
+ "DownloadLink": "https://code.visualstudio.com/download"
+ },
+ {
+ "Name": "DotNetCore",
+ "DownloadLink": "https://dotnet.microsoft.com/en-us/download/dotnet/3.1"
},
+ {
+ "Name": "VisualStudio",
+ "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ }
+ ]
+ },
+ {
+ "Name": "Call Microsoft Graph",
+ "Type": "BlazorWasm",
+ "PlatformType": "Spa",
+ "DisplayName": "Enable your Blazor WebAssembly to authorize users for calling Microsoft Graph",
+ "WorkingFolder": "",
+ "Tags": [
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "Microsoft.Authentication.WebAssembly.Msal" },
+ { "Name": "PKCE" }
+ ],
+ "GitHubRepoSettings": {
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-blazor-wasm/blob/main/WebApp-graph-user/Call-MSGraph/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-webassembly",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-blazor-wasm.git",
+ "LocalPath": "BlazorWASM\\GraphAPI"
+ },
+ "Projects": [
{
"Name": "Client Project",
- "ProjectPath": "WebApp-your-API\\MyOrg\\Client",
- "Order": "1",
+ "ProjectPath": "WebApp-graph-user\\Call-MSGraph",
+ "Order": "0",
"PortalSettings": {
- "DisplayName": "WebApp-calls-API-blazor-server",
+ "DisplayName": "WebApp-blazor-wasm-graph",
"SignInAudience": "AzureADMyOrg",
"AppType": "Web",
- "RedirectUri": "https://localhost:44318/signin-oidc",
+ "RedirectUri": "https://localhost:44314/authentication/login-callback",
"IsHybridFlow": "True",
"IsDeviceCodeFlow": "",
- "SecretName": "mySecret",
+ "SecretName": "",
"RequiredResourceAccesss": [
{
"ResourceAppId": "00000003-0000-0000-c000-000000000000",
"ResourceAccesss": [
{
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
- "Type": "Scope"
- }
- ]
-
- },
- {
- "ResourceAppId": "persistdata:Projects[0].App.AppId",
- "ResourceAccesss": [
- {
- "Id": "persistdata:Projects[0].PermissionScopes[0].Id",
+ "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", //User.Read
"Type": "Scope"
}
]
-
}
]
},
@@ -1363,42 +2518,18 @@
"Name": "ClientId",
"ReplacementType": "JSON",
"Section": "AzureAd",
- "Source": "persistdata:Projects[1].App.AppId",
+ "Source": "persistdata:Projects[0].App.AppId",
"Destination": "ClientId",
- "FileName": "appsettings.json"
- },
- {
- "Name": "TenantId",
- "Section": "AzureAd",
- "ReplacementType": "JSON",
- "Source": "persistdata:Projects[1].TenantId",
- "Destination": "TenantId",
- "FileName": "appsettings.json"
+ "FileName": "blazorwasm-calls-MS-graph\\wwwroot\\appsettings.json"
},
{
- "Name": "Domain",
- "Section": "AzureAd",
+ "Name": "Authority",
"ReplacementType": "JSON",
- "Source": "persistdata:Projects[1].Domain",
- "Destination": "Domain",
- "FileName": "appsettings.json"
- },
- {
- "Name": "ClientSecret",
"Section": "AzureAd",
- "ReplacementType": "JSON",
- "Source": "persistdata:Projects[1].SecretText",
- "Destination": "ClientSecret",
- "FileName": "appsettings.json"
- },
- {
- "Name": "TodoListScopes",
- "Section": "TodoList",
- "ReplacementType": "JSON",
- "Format": "api://{0}/access_as_user",
- "Source": "persistdata:Projects[0].App.AppId",
- "Destination": "TodoListScope",
- "FileName": "appsettings.json"
+ "Format": "https://login.microsoftonline.com/{0}",
+ "Source": "persistdata:Projects[0].TenantId",
+ "Destination": "Authority",
+ "FileName": "blazorwasm-calls-MS-graph\\wwwroot\\appsettings.json"
}
]
}
@@ -1421,17 +2552,20 @@
]
},
{
+
"Name": "Angular",
+ "Type": "Spa",
"DisplayName": "Angular",
"Samples": [
{
"Name": "Sign In Users",
"Type": "Angular",
+ "PlatformType": "Spa",
"DisplayName": "Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory",
"WorkingFolder": "1-Authentication\\1-sign-in\\SPA",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL Angular" },
+ { "Name": "SignIn" },
+ { "Name": "MSAL.Angular" },
{ "Name": "PKCE" }
],
"GitHubRepoSettings": {
@@ -1505,11 +2639,13 @@
{
"Name": "SPA calling Graph API",
"Type": "Angular",
+ "PlatformType": "Spa",
"DisplayName": "Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory and call the Microsoft Graph API",
"WorkingFolder": "2-Authorization-I\\1-call-graph\\SPA",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL Angular" },
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "MSAL.Angular" },
{ "Name": "PKCE" }
],
"GitHubRepoSettings": {
@@ -1595,11 +2731,14 @@
{
"Name": "SPA calling .NET core API",
"Type": "Angular",
+ "PlatformType": "Spa",
"DisplayName": "Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory and call a .NET Core web API",
"WorkingFolder": "3-Authorization-II\\1-call-api",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL Angular" },
+ { "Name": "SignIn" },
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
+ { "Name": "MSAL.Angular" },
{ "Name": "PKCE" }
],
"GitHubRepoSettings": {
@@ -1759,11 +2898,15 @@
{
"Name": "SPA calling .NET core API Which calls Graph(OBO)",
"Type": "Angular",
+ "PlatformType": "Spa",
"DisplayName": "Angular single-page application authorizing .NET Core web API to call Microsoft Graph using on-behalf-of flow",
"WorkingFolder": "7-AdvancedScenarios\\1-call-api-obo",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL Angular" },
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "CallCustomApi" },
+ { "Name": "MSAL.Angular" },
+ { "Name": "Microsoft.Identity.Web" },
{ "Name": "PKCE" },
{ "Name": "OBO" }
],
@@ -1940,16 +3083,18 @@
},
{
"Name": "React",
+ "Type": "Spa",
"DisplayName": "React",
"Samples": [
{
"Name": "Sign In Users",
"Type": "React",
+ "PlatformType": "Spa",
"DisplayName": "React single-page application using MSAL React to sign-in users against Azure Active Directory",
"WorkingFolder": "1-Authentication\\1-sign-in\\SPA",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL React" },
+ { "Name": "SignIn" },
+ { "Name": "MSAL.React" },
{ "Name": "PKCE" }
],
"GitHubRepoSettings": {
@@ -2026,11 +3171,13 @@
{
"Name": "SPA calling Graph API",
"Type": "React",
+ "PlatformType": "Spa",
"DisplayName": "React single-page application using MSAL React to sign-in users and call Graph API against Azure Active Directory",
"WorkingFolder": "2-Authorization-I\\1-call-graph\\SPA",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL React" },
+ { "Name": "SignIn" },
+ { "Name": "Callgraph" },
+ { "Name": "MSAL.React" },
{ "Name": "PKCE" }
],
"GitHubRepoSettings": {
@@ -2120,11 +3267,14 @@
{
"Name": "SPA calling NodeJS API",
"Type": "React",
+ "PlatformType": "Spa",
"DisplayName": "A React single-page application using MSAL React to authorize users for calling a protected web API on Azure Active Directory",
"WorkingFolder": "3-Authorization-II\\1-call-api",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL React" },
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
+ { "Name": "MSAL.React" },
+ { "Name": "MSAL.Node" },
{ "Name": "PKCE" }
],
"GitHubRepoSettings": {
@@ -2268,16 +3418,18 @@
},
{
"Name": "Javascript",
+ "Type": "Spa",
"DisplayName": "Javascript",
"Samples": [
{
"Name": "Sign In Users",
- "Type": "JS",
+ "Type": "Javascript",
+ "PlatformType": "Spa",
"DisplayName": "React single-page application using MSAL React to sign-in users against Azure Active Directory",
"WorkingFolder": "1-Authentication\\1-sign-in",
"Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL JS" },
+ { "Name": "SignIn" },
+ { "Name": "MSAL.JS" },
{ "Name": "PKCE" }
],
"GitHubRepoSettings": {
@@ -2295,178 +3447,10 @@
"DisplayName": "ms-identity-javascript-tutorial-c1s1",
"SignInAudience": "AzureADMyOrg",
"AppType": "Spa",
- "RedirectUri": "http://localhost:3000/",
- "IsHybridFlow": "",
- "IsDeviceCodeFlow": "",
- "SecretName": "",
-
- "RequiredResourceAccesss": [
- {
- "ResourceAppId": "00000003-0000-0000-c000-000000000000",
- "ResourceAccesss": [
- {
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
- "Type": "Scope"
- }
- ]
- }
- ]
- },
- "ReplacementFields": [
- {
- "Name": "ClientId",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "persistdata:Projects[0].App.AppId",
- "Destination": "Enter_the_Application_Id_Here",
- "FileName": "App\\authConfig.js"
- },
- {
- "Name": "Authority",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "persistdata:Projects[0].TenantId",
- "Destination": "Enter_the_Tenant_Info_Here",
- "FileName": "App\\authConfig.js"
- },
- {
- "Name": "redirectURi",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "http://localhost:3000/",
- "Destination": "Enter_the_Redirect_Uri_Here",
- "FileName": "App\\authConfig.js"
- }
- ]
- }
- ],
- "Prerequisites": [
- {
- "Name": "VSCode",
- "DownloadLink": "https://code.visualstudio.com/download"
- },
- {
- "Name": "NPM",
- "DownloadLink": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
- }
- ]
- },
- {
- "Name": "Call Microsoft Graph",
- "Type": "JS",
- "DisplayName": "Vanilla JavaScript single-page application using MSAL.js to authorize users for calling Microsoft Graph",
- "WorkingFolder": "2-Authorization-I\\1-call-graph",
- "Tags": [
- { "Name": "Spa" },
- { "Name": "MSAL JS" },
- { "Name": "PKCE" }
- ],
- "GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-tutorial/blob/main/2-Authorization-I/1-call-graph/README.md",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-auth-code",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-tutorial.git",
- "LocalPath": "JS\\CallGraph"
- },
- "Projects": [
- {
- "Name": "Client Project",
- "ProjectPath": "2-Authorization-I\\1-call-graph",
- "Order": "0",
- "PortalSettings": {
- "DisplayName": "ms-identity-javascript-tutorial-c2s1",
- "SignInAudience": "AzureADMyOrg",
- "AppType": "Spa",
- "RedirectUri": "http://localhost:3000/",
- "IsHybridFlow": "",
- "IsDeviceCodeFlow": "",
- "SecretName": "",
-
- "RequiredResourceAccesss": [
- {
- "ResourceAppId": "00000003-0000-0000-c000-000000000000",
- "ResourceAccesss": [
- {
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
- "Type": "Scope"
- }
- ]
- }
- ]
- },
- "ReplacementFields": [
- {
- "Name": "ClientId",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "persistdata:Projects[0].App.AppId",
- "Destination": "Enter_the_Application_Id_Here",
- "FileName": "App\\authConfig.js"
- },
- {
- "Name": "Authority",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "persistdata:Projects[0].TenantId",
- "Destination": "Enter_the_Tenant_Info_Here",
- "FileName": "App\\authConfig.js"
- },
- {
- "Name": "redirectURi",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "http://localhost:3000/",
- "Destination": "Enter_the_Redirect_Uri_Here",
- "FileName": "App\\authConfig.js"
- }
- ]
- }
- ],
- "Prerequisites": [
- {
- "Name": "VSCode",
- "DownloadLink": "https://code.visualstudio.com/download"
- },
- {
- "Name": "NPM",
- "DownloadLink": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
- }
- ]
- }
- ]
- },
- {
- "Name": "Node",
- "DisplayName": "Node.js",
- "Samples": [
- {
- "Name": "Sign In Users",
- "Type": "NodeJS",
- "DisplayName": "A Node.js & Express web app authenticating users against Azure AD with MSAL Nod",
- "WorkingFolder": "1-Authentication\\1-sign-in",
- "Tags": [
- { "Name": "Node" },
- { "Name": "MSAL JS" },
- { "Name": "Auth Code Flow" }
- ],
- "GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial/blob/main/1-Authentication/1-sign-in/README.md",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial.git",
- "LocalPath": "NodeJS\\SignIn"
- },
- "Projects": [
- {
- "Name": "Client Project",
- "ProjectPath": "1-Authentication\\1-sign-in",
- "Order": "0",
- "PortalSettings": {
- "DisplayName": "msal-node-webapp",
- "SignInAudience": "AzureADMyOrg",
- "AppType": "Web",
- "RedirectUri": "http://localhost:4000/redirect",
- "IsHybridFlow": "True",
+ "RedirectUri": "http://localhost:3000/",
+ "IsHybridFlow": "",
"IsDeviceCodeFlow": "",
- "SecretName": "appsecret",
+ "SecretName": "",
"RequiredResourceAccesss": [
{
@@ -2487,31 +3471,23 @@
"Format": "",
"Source": "persistdata:Projects[0].App.AppId",
"Destination": "Enter_the_Application_Id_Here",
- "FileName": "App\\appSettings.js"
+ "FileName": "App\\authConfig.js"
},
{
- "Name": "TenantId",
+ "Name": "Authority",
"ReplacementType": "TXT",
"Format": "",
"Source": "persistdata:Projects[0].TenantId",
"Destination": "Enter_the_Tenant_Info_Here",
- "FileName": "App\\appSettings.js"
- },
- {
- "Name": "ClientSecret",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "Enter_the_Client_Secret_Here",
- "FileName": "App\\appSettings.js"
+ "FileName": "App\\authConfig.js"
},
{
- "Name": "ClientSecret",
+ "Name": "redirectURi",
"ReplacementType": "TXT",
"Format": "",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "ENTER_YOUR_SECRET_HERE",
- "FileName": "App\\app.js"
+ "Source": "http://localhost:3000/",
+ "Destination": "Enter_the_Redirect_Uri_Here",
+ "FileName": "App\\authConfig.js"
}
]
}
@@ -2528,34 +3504,35 @@
]
},
{
- "Name": "Call MS Graph",
- "Type": "NodeJS",
- "DisplayName": "A Node.js & Express web app calling Microsoft Graph using MSAL Node",
- "WorkingFolder": "2-Authorization\\1-call-graph",
+ "Name": "Call Microsoft Graph",
+ "Type": "Javascript",
+ "PlatformType": "Spa",
+ "DisplayName": "Vanilla JavaScript single-page application using MSAL.js to authorize users for calling Microsoft Graph",
+ "WorkingFolder": "2-Authorization-I\\1-call-graph",
"Tags": [
- { "Name": "Node" },
- { "Name": "MSAL JS" },
- { "Name": "Auth Code Flow" }
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial/blob/main/2-Authorization/1-call-graph/README.md",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-nodejs-tutorial.git",
- "LocalPath": "NodeJS\\CallGraph"
+ "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-javascript-tutorial/blob/main/2-Authorization-I/1-call-graph/README.md",
+ "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-auth-code",
+ "ClonePath": "https://github.com/Azure-Samples/ms-identity-javascript-tutorial.git",
+ "LocalPath": "JS\\CallGraph"
},
"Projects": [
{
"Name": "Client Project",
- "ProjectPath": "2-Authorization\\1-call-graph",
+ "ProjectPath": "2-Authorization-I\\1-call-graph",
"Order": "0",
"PortalSettings": {
- "DisplayName": "msal-node-webapp",
+ "DisplayName": "ms-identity-javascript-tutorial-c2s1",
"SignInAudience": "AzureADMyOrg",
- "AppType": "Web",
- "RedirectUri": "http://localhost:4000/redirect",
- "IsHybridFlow": "True",
+ "AppType": "Spa",
+ "RedirectUri": "http://localhost:3000/",
+ "IsHybridFlow": "",
"IsDeviceCodeFlow": "",
- "SecretName": "appsecret",
+ "SecretName": "",
"RequiredResourceAccesss": [
{
@@ -2566,15 +3543,6 @@
"Type": "Scope"
}
]
- },
- {
- "resourceAppId": "797f4846-ba00-4fd7-ba43-dac1f8f63013",
- "resourceAccess": [
- {
- "id": "41094075-9dad-400e-a0bd-54e686782033",
- "type": "Scope"
- }
- ]
}
]
},
@@ -2585,31 +3553,23 @@
"Format": "",
"Source": "persistdata:Projects[0].App.AppId",
"Destination": "Enter_the_Application_Id_Here",
- "FileName": "App\\appSettings.js"
+ "FileName": "App\\authConfig.js"
},
{
- "Name": "TenantId",
+ "Name": "Authority",
"ReplacementType": "TXT",
"Format": "",
"Source": "persistdata:Projects[0].TenantId",
"Destination": "Enter_the_Tenant_Info_Here",
- "FileName": "App\\appSettings.js"
- },
- {
- "Name": "ClientSecret",
- "ReplacementType": "TXT",
- "Format": "",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "Enter_the_Client_Secret_Here",
- "FileName": "App\\appSettings.js"
+ "FileName": "App\\authConfig.js"
},
{
- "Name": "ClientSecret",
+ "Name": "redirectURi",
"ReplacementType": "TXT",
"Format": "",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "ENTER_YOUR_SECRET_HERE",
- "FileName": "App\\app.js"
+ "Source": "http://localhost:3000/",
+ "Destination": "Enter_the_Redirect_Uri_Here",
+ "FileName": "App\\authConfig.js"
}
]
}
@@ -2628,21 +3588,23 @@
]
},
{
- "Name": "WPF",
+ "Name": "Wpf",
"DisplayName": "WPF",
+ "Type": "PublicClient",
"Samples": [
{
"Name": "WPF app calling Graph",
- "Type": "WPFMSAL",
+ "Type": "Wpf",
+ "PlatformType": "PublicClient",
"DisplayName": "WPF application signing in users with Microsoft and calling the Microsoft Graph",
"WorkingFolder": "",
"Tags": [
- { "Name": "Desktop" },
- { "Name": "WPF" },
+ { "Name": "SignIn" },
+ { "Name": "CallGraph" },
{ "Name": "MSAL.NET" },
{ "Name": "WAM" },
- { "Name": "System browser" },
- { "Name": "PKCE Flow" }
+ { "Name": "Desktop" },
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/active-directory-dotnet-desktop-msgraph-v2/blob/master/README.md",
@@ -2702,16 +3664,18 @@
},
{
"Name": "WPF app calling ASP.NET core API",
- "Type": "WPFMSAL",
+ "Type": "Wpf",
+ "PlatformType": "PublicClient",
"DisplayName": "Sign-in a user with the Microsoft Identity Platform in a WPF Desktop application and call an ASP.NET Core Web API",
"WorkingFolder": "1. Desktop app calls Web API",
"Tags": [
- { "Name": "Desktop" },
- { "Name": "WPF" },
+ { "Name": "SignIn" },
+ { "Name": "CallCustomApi" },
{ "Name": "MSAL.NET" },
+ { "Name": "Microsoft.Identity.Web" },
{ "Name": "WAM" },
{ "Name": "System browser" },
- { "Name": "PKCE Flow" }
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore-v2/blob/master/1.%20Desktop%20app%20calls%20Web%20API/README.md",
@@ -2843,21 +3807,24 @@
},
{
"Name": "XAMARIN",
+ "Type": "PublicClient",
"DisplayName": "XAMARIN",
"Samples": [
{
- "Name": "Sign in users in XAMARIN",
+ "Name": "Sign in users",
"Type": "XAMARIN",
+ "PlatformType": "PublicClient",
"DisplayName": "Integrate Microsoft identity and the Microsoft Graph into a Xamarin forms app using MSAL",
"WorkingFolder": "1-Basic",
"Tags": [
+ { "Name": "SignIn" },
{ "Name": "Mobile" },
- { "Name": "UWP" },
{ "Name": "ANDROID/IOS" },
{ "Name": "XAMARIN" },
- { "Name": "MSAL Net" },
+ { "Name": "MSAL.Net" },
{ "Name": "Broker" },
- { "Name": "PKCE Flow" }
+ { "Name": "Wam" },
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/active-directory-xamarin-native-v2/blob/main/1-Basic/README.md",
@@ -2948,24 +3915,25 @@
}
]
}
-
+
]
},
{
"Name": "Android",
+ "Type": "PublicClient",
"DisplayName": "Android",
"Samples": [
{
"Name": "Sign in users and call Microsoft Graph(Java Android)",
"Type": "JavaAndroid",
+ "PlatformType": "PublicClient",
"DisplayName": "Use MSAL in an Android app to sign-in users and call Microsoft Graph",
"WorkingFolder": "",
"Tags": [
- { "Name": "Mobile" },
- { "Name": "Android Kotlin" },
- { "Name": "MSAL Android" },
+ { "Name": "SignIn" },
+ { "Name": "MSAL.Android" },
{ "Name": "Broker" },
- { "Name": "PKCE Flow" }
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/ms-identity-android-java/blob/master/README.md",
@@ -3041,15 +4009,15 @@
},
{
"Name": "Sign in users and call Microsoft Graph(Java Kotlin)",
- "Type": "JavaKotlin",
+ "Type": "JavaKotlinAndroid",
+ "PlatformType": "PublicClient",
"DisplayName": "Use MSAL in an Android app to sign-in users and call Microsoft Graph",
"WorkingFolder": "",
"Tags": [
- { "Name": "Mobile" },
- { "Name": "Android Kotlin" },
- { "Name": "MSAL Android" },
+ { "Name": "SignIn" },
+ { "Name": "MSAL.Android" },
{ "Name": "Broker" },
- { "Name": "PKCE Flow" }
+ { "Name": "PKCE" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/ms-identity-android-kotlin/blob/master/README.md",
@@ -3123,181 +4091,108 @@
}
]
}
+ //{
+ // "Name": "Sign in users and display profile pic(Java Kotlin)",
+ // "Type": "JavaKotlinAndroid",
+ // "PlatformType": "PublicClient",
+ // "DisplayName": "Use MSAL in an Android app to sign-in users and call Microsoft Graph",
+ // "WorkingFolder": "",
+ // "Tags": [
+ // { "Name": "SignIn" },
+ // { "Name": "MSAL.Android" },
+ // { "Name": "Broker" },
+ // { "Name": "PKCE" }
+ // ],
+ // "GitHubRepoSettings": {
+ // "ReadMeLink": "https://github.com/idaceappdev/ms-identity-android-kotlin/blob/master/README.md",
+ // "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-android",
+ // "ClonePath": "https://github.com/idaceappdev/ms-identity-android-kotlin.git",
+ // "LocalPath": "AndroidKotlin\\CallGraph"
+ // },
+ // "Projects": [
+ // {
+ // "Name": "Client Project",
+ // "ProjectPath": "",
+ // "Order": "0",
+ // "PortalSettings": {
+ // "DisplayName": "AndroidKotlinApp",
+ // "SignInAudience": "AzureADandPersonalMicrosoftAccount",
+ // "AppType": "Desktop",
+ // "RedirectUri": "msauth://com.azuresamples.msalandroidkotlinapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
+ // "IsHybridFlow": "",
+ // "IsDeviceCodeFlow": "",
+ // "SecretName": "",
+
+ // "RequiredResourceAccesss": [
+ // {
+ // "ResourceAppId": "00000003-0000-0000-c000-000000000000",
+ // "ResourceAccesss": [
+ // {
+ // "id": "b340eb25-3456-403f-be2f-af7a0d370277",
+ // "Type": "Scope"
+ // }
+ // ]
+ // }
+ // ]
+ // },
+ // "ReplacementFields": [
+ // {
+ // "Name": "ClientId",
+ // "ReplacementType": "JSON",
+ // "Section": "",
+ // "Source": "persistdata:Projects[0].App.AppId",
+ // "Destination": "client_id",
+ // "FileName": "app\\src\\main\\res\\raw\\auth_config_single_account.json"
+ // },
+ // {
+ // "Name": "ClientId",
+ // "ReplacementType": "JSON",
+ // "Section": "",
+ // "Source": "persistdata:Projects[0].App.AppId",
+ // "Destination": "client_id",
+ // "FileName": "app\\src\\main\\res\\raw\\auth_config_multiple_account.json"
+ // }
+ // //{
+ // // "Name": "Authority",
+ // // "ReplacementType": "JSON",
+ // // "Section": "",
+ // // "Format": "https://login.microsoftonline.com/{0}",
+ // // "Source": "persistdata:Projects[0].TenantId",
+ // // "Destination": "authorities:0:authority_url",
+ // // "FileName": "app\\src\\main\\res\\raw\\auth_config_single_account.json"
+ // //}
+ // ]
+ // }
+ // ],
+ // "Prerequisites": [
+ // {
+ // "Name": "Java",
+ // "DownloadLink": "https://code.visualstudio.com/download"
+ // },
+ // {
+ // "Name": "Android Studio",
+ // "DownloadLink": "https://visualstudio.microsoft.com/downloads/"
+ // }
+ // ]
+ //}
]
},
{
- "Name": "Python",
+ "Name": "PythonHeadlessConsole",
+ "Type": "Daemon",
"DisplayName": "Python",
"Samples": [
- {
- "Name": "Sign in users in python flask web app",
- "Type": "PythonFlask",
- "DisplayName": "Enable your Python Flask webapp to sign in users to your Azure Active Directory tenant with the Microsoft identity platform",
- "WorkingFolder": "",
- "Tags": [
- { "Name": "Web App" },
- { "Name": "Python Flask" },
- { "Name": "MSAL Python" },
- { "Name": "Auth Code Flow" }
- ],
- "GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-python-flask-webapp-authentication",
- "TutorialLink": "https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-python-token-cache-serialization",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-python-flask-webapp-authentication.git",
- "LocalPath": "PythonFlask\\SignIn"
- },
- "Projects": [
- {
- "Name": "Client Project",
- "ProjectPath": "",
- "Order": "0",
- "PortalSettings": {
- "DisplayName": "python-flask-webapp-auth-my-tenant",
- "SignInAudience": "AzureADMyOrg",
- "AppType": "Web",
- "RedirectUri": "https://127.0.0.1:5000/auth/redirect",
- "IsHybridFlow": "",
- "IsDeviceCodeFlow": "",
- "SecretName": "mysecret",
-
- "RequiredResourceAccesss": [
- {
- "ResourceAppId": "00000003-0000-0000-c000-000000000000",
- "ResourceAccesss": [
- {
- "Id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
- "Type": "Scope"
- }
- ]
- }
- ]
- },
- "ReplacementFields": [
- {
- "Name": "ClientId",
- "ReplacementType": "JSON",
- "Section": "client",
- "Source": "persistdata:Projects[0].App.AppId",
- "Destination": "client_id",
- "FileName": "aad.config.json"
- },
- {
- "Name": "TenantId",
- "ReplacementType": "JSON",
- "Section": "client",
- "Format": "https://login.microsoftonline.com/{0}",
- "Source": "persistdata:Projects[0].TenantId",
- "Destination": "authority",
- "FileName": "aad.config.json"
- },
- {
- "Name": "ClientSecret",
- "ReplacementType": "JSON",
- "Section": "client",
- "Format": "",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "client_credential",
- "FileName": "aad.config.json"
- }
- ]
- }
- ],
- "Prerequisites": [
- {
- "Name": "VSCode",
- "DownloadLink": "https://code.visualstudio.com/download"
- },
- {
- "Name": "Python",
- "DownloadLink": "https://www.python.org/downloads/release/python-380/"
- }
- ]
- },
- {
- "Name": "Python flask web app calling graph API",
- "Type": "PythonFlask",
- "DisplayName": "This sample demonstrates a Python web application calling a Microsoft Graph that is secured using Azure Active Directory.",
- "WorkingFolder": "",
- "Tags": [
- { "Name": "Web App" },
- { "Name": "Python Flask" },
- { "Name": "MSAL Python" },
- { "Name": "Auth Code Flow" }
- ],
- "GitHubRepoSettings": {
- "ReadMeLink": "https://github.com/Azure-Samples/ms-identity-python-webapp",
- "TutorialLink": "https://docs.microsoft.com/en-us/samples/azure-samples/ms-identity-python-webapp/ms-identity-python-webapp/",
- "ClonePath": "https://github.com/Azure-Samples/ms-identity-python-webapp.git",
- "LocalPath": "PythonFlask\\CallGraphAPI"
- },
- "Projects": [
- {
- "Name": "Client Project",
- "ProjectPath": "",
- "Order": "0",
- "PortalSettings": {
- "DisplayName": "python-webapp",
- "SignInAudience": "AzureADandPersonalMicrosoftAccount",
- "AppType": "Web",
- "RedirectUri": "http://localhost:5000/getAToken",
- "IsHybridFlow": "",
- "IsDeviceCodeFlow": "",
- "SecretName": "appsecret",
-
- "RequiredResourceAccesss": [
- {
- "ResourceAppId": "00000003-0000-0000-c000-000000000000",
- "ResourceAccesss": [
- {
- "id": "b340eb25-3456-403f-be2f-af7a0d370277",
- "Type": "Scope"
- }
- ]
- }
- ]
- },
- "ReplacementFields": [
- {
- "Name": "ClientId",
- "ReplacementType": "TXT",
- "Section": "client",
- "Source": "persistdata:Projects[0].App.AppId",
- "Destination": "Enter_the_Application_Id_here",
- "FileName": "app_config.py"
- },
- {
- "Name": "ClientSecret",
- "ReplacementType": "TXT",
- "Section": "client",
- "Format": "",
- "Source": "persistdata:Projects[0].SecretText",
- "Destination": "Enter_the_Client_Secret_Here",
- "FileName": "app_config.py"
- }
- ]
- }
- ],
- "Prerequisites": [
- {
- "Name": "VSCode",
- "DownloadLink": "https://code.visualstudio.com/download"
- },
- {
- "Name": "Python",
- "DownloadLink": "https://www.python.org/downloads/release/python-380/"
- }
- ]
- },
{
"Name": "Daemon - Call Microsoft Graph with secret",
- "Type": "Python",
+ "Type": "PythonHeadlessConsole",
+ "PlatformType": "Daemon",
"DisplayName": "A simple Python daemon console application calling Microsoft Graph with its own identity (client secret variation)",
"WorkingFolder": "1-Call-MsGraph-WithSecret",
"Tags": [
{ "Name": "Daemon" },
{ "Name": "Python" },
- { "Name": "MSAL Python" },
- { "Name": "Client credential flow" }
+ { "Name": "MSAL.Python" },
+ { "Name": "Client Credential Flow" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/ms-identity-python-daemon/tree/master/1-Call-MsGraph-WithSecret",
@@ -3377,14 +4272,16 @@
},
{
"Name": "Daemon - Call Microsoft Graph with Certificate",
- "Type": "Python",
+ "Type": "PythonHeadlessConsole",
+ "PlatformType": "Daemon",
"DisplayName": "A simple Python daemon console application calling Microsoft Graph with its own identity (client certificate variation)",
"WorkingFolder": "2-Call-MsGraph-WithCertificate",
"Tags": [
{ "Name": "Daemon" },
{ "Name": "Python" },
- { "Name": "MSAL Python" },
- { "Name": "Client credential flow" }
+ { "Name": "WithCertificate" },
+ { "Name": "MSAL.Python" },
+ { "Name": "Client Credential Flow" }
],
"GitHubRepoSettings": {
"ReadMeLink": "https://github.com/Azure-Samples/ms-identity-python-daemon/blob/master/2-Call-MsGraph-WithCertificate/README.md",
diff --git a/IdAceCodeEditor/IdAceCodeEditor.csproj b/IdAceCodeEditor/IdAceCodeEditor.csproj
index 655d009..5697c3e 100644
--- a/IdAceCodeEditor/IdAceCodeEditor.csproj
+++ b/IdAceCodeEditor/IdAceCodeEditor.csproj
@@ -5,6 +5,7 @@
netcoreapp3.1
true
bin
+ getsitelogo.ico
@@ -13,6 +14,10 @@
+
+
+
+
diff --git a/IdAceCodeEditor/Models/DataSource.cs b/IdAceCodeEditor/Models/DataSource.cs
index 89c715a..81c86a9 100644
--- a/IdAceCodeEditor/Models/DataSource.cs
+++ b/IdAceCodeEditor/Models/DataSource.cs
@@ -2,15 +2,35 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
using System.Text;
using System.Windows;
using System.Windows.Input;
namespace IdAceCodeEditor
{
- public class DataSource
+ public class DataSource : INotifyPropertyChanged
{
- public ObservableCollection Frameworks{ get; set; }
+ public event PropertyChangedEventHandler PropertyChanged;
+ protected void OnPropertyChanged([CallerMemberName] string name = null)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+ public ObservableCollection Frameworks{ get; set; }
+
+ Framework _SelectedFramework;
+ public Framework SelectedFramework
+ {
+ get { return _SelectedFramework; }
+ set
+ {
+ _SelectedFramework = value;
+ // Call OnPropertyChanged whenever the property is updated
+ OnPropertyChanged();
+ }
+ }
+ public ObservableCollection Samples { get; set; }
private ICommand _guideMeCommand;
diff --git a/IdAceCodeEditor/Models/Framework.cs b/IdAceCodeEditor/Models/Framework.cs
index ee95e17..5091d0d 100644
--- a/IdAceCodeEditor/Models/Framework.cs
+++ b/IdAceCodeEditor/Models/Framework.cs
@@ -11,6 +11,7 @@ public class Framework
{
public string Name { get; set; }
public string DisplayName { get; set; }
+ public string Type { get; set; }
public ObservableCollection Samples { get; set; }
}
diff --git a/IdAceCodeEditor/Models/Sample.cs b/IdAceCodeEditor/Models/Sample.cs
index 911c586..692a0ac 100644
--- a/IdAceCodeEditor/Models/Sample.cs
+++ b/IdAceCodeEditor/Models/Sample.cs
@@ -2,18 +2,36 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
using System.Text;
using System.Windows;
using System.Windows.Input;
namespace IdAceCodeEditor
{
- public class Sample
+ public class Sample : INotifyPropertyChanged
{
+ public event PropertyChangedEventHandler PropertyChanged;
+ protected void OnPropertyChanged([CallerMemberName] string name = null)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+ bool _IsSelected;
+ public bool IsSelected
+ {
+ get { return _IsSelected; }
+ set
+ {
+ _IsSelected = value;
+ // Call OnPropertyChanged whenever the property is updated
+ OnPropertyChanged();
+ }
+ }
public string Name { get; set; }
public string DisplayName { get; set; }
public string Type { get; set; }
-
+ public string PlatformType { get; set; }
public string WorkingFolder { get; set; }
public GitHubRepo GitHubRepoSettings{ get; set; }
public ObservableCollection Projects { get; set; }
diff --git a/IdAceCodeEditor/Views/GuideMeWindow.xaml b/IdAceCodeEditor/Views/GuideMeWindow.xaml
index a5f5b07..819cb6e 100644
--- a/IdAceCodeEditor/Views/GuideMeWindow.xaml
+++ b/IdAceCodeEditor/Views/GuideMeWindow.xaml
@@ -5,45 +5,71 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:IdAceCodeEditor.Views"
mc:Ignorable="d"
- Title="GuideMeWindow" Height="650" Width="420" WindowStartupLocation="CenterOwner">
+ Title="GuideMeWindow" Height="655" Width="700" Closing="Window_Closing" WindowStartupLocation="CenterOwner">
-
-
-
-
+
+
+
+
-
-
- Select the aplication platform
-
-
+
+
+
+
+
+
+
+ Web Application
+ SPA - Single page application
+
+
+ Public Client - Mobile/Desktop
+ Daemon - No user involved
+
+
-
+
- If the application interactive and user is involved, then please select this option
- If the application daemon and operates without UI, then please select this option
+ Select your aplication framework
+
-
-
- Application implements sign-in feature to the users
- Application implements sign-in feature to the users and then calls graph resources
- Application implements sign-in feature to the users and then calls custom API
-
+
+
+
+
+
+
+
+ User should Sign In to app
+ App Calls Graph Api
+ App calls custom Api
+
+
+ Usage of certificate over secret
+ Integration with Azure KeyVault
+ CAE enabled client
+
+
-
+
- Usage of certificate
- Store Certificate in Azure KeyVault
- CAE
+
+ Based on your creteria, below samples are most relavent in the order of sequence. Select one and click submit button
+
+
-
+
-
-
+
+
diff --git a/IdAceCodeEditor/Views/GuideMeWindow.xaml.cs b/IdAceCodeEditor/Views/GuideMeWindow.xaml.cs
index ba8a55c..5513cf7 100644
--- a/IdAceCodeEditor/Views/GuideMeWindow.xaml.cs
+++ b/IdAceCodeEditor/Views/GuideMeWindow.xaml.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
@@ -9,6 +11,7 @@
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
+using Windows.Devices.Lights;
namespace IdAceCodeEditor.Views
{
@@ -20,6 +23,100 @@ public partial class GuideMeWindow : Window
public GuideMeWindow(DataSource framework)
{
InitializeComponent();
+ ObservableCollection allSamples = new ObservableCollection();
+ foreach (var frame in framework.Frameworks)
+ {
+ foreach (var samp in frame.Samples)
+ {
+ allSamples.Add(samp);
+ }
+ }
+ framework.Samples = allSamples;
+ this.DataContext = framework;
+ }
+
+ private void RadioButton_Checked(object sender, RoutedEventArgs e)
+ {
+ var radioButton = sender as RadioButton;
+ var framworks = cmbFramework.ItemsSource;
+
+ CollectionView itemsViewOriginal = (CollectionView)CollectionViewSource.GetDefaultView(cmbFramework.Items);
+ itemsViewOriginal.Filter = ((o) =>
+ {
+ return ((Framework)o).Type.Equals(radioButton.Tag);
+ });
+ itemsViewOriginal.Refresh();
+
+ CollectionView itemsViewOriginal2 = (CollectionView)CollectionViewSource.GetDefaultView(lstScenario.Items);
+ itemsViewOriginal2.Filter = ((o) =>
+ {
+ return ((Sample)o).PlatformType.Equals(radioButton.Tag);
+ });
+ itemsViewOriginal2.Refresh();
+ }
+
+ private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ CollectionView itemsViewOriginal = (CollectionView)CollectionViewSource.GetDefaultView(cmbFramework.Items);
+ itemsViewOriginal.Filter = ((o) =>
+ {
+ return true;
+ });
+ itemsViewOriginal.Refresh();
+ }
+ private void cmbFramework_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ var comboBox = sender as ComboBox;
+ Framework framework= comboBox.SelectedItem as Framework;
+
+ if (framework != null && comboBox!=null)
+ {
+ CollectionView itemsViewOriginal2 = (CollectionView)CollectionViewSource.GetDefaultView(lstScenario.Items);
+ itemsViewOriginal2.Filter = ((o) =>
+ {
+ return ((Sample)o).Type.Contains(framework.Name) ||
+ framework.Name.Contains(((Sample)o).Type);
+ });
+ itemsViewOriginal2.Refresh();
+ }
+ }
+
+ private void Submit_Click(object sender, RoutedEventArgs e)
+ {
+ Framework framework= cmbFramework.SelectedItem as Framework;
+ Sample sample = lstScenario.SelectedItem as Sample;
+
+ if (sample != null && framework.Samples != null)
+ {
+ foreach (var item in framework.Samples)
+ {
+ if (item.Name.Equals(sample.Name))
+ item.IsSelected = true;
+ }
+ }
+ this.Close();
+ }
+
+ private void Cancel_Click(object sender, RoutedEventArgs e)
+ {
+ this.Close();
+ }
+
+ private void CheckBox_Checked(object sender, RoutedEventArgs e)
+ {
+ Framework framework = cmbFramework.SelectedItem as Framework;
+
+ if (framework != null )
+ {
+ CollectionView itemsViewOriginal2 = (CollectionView)CollectionViewSource.GetDefaultView(
+ lstScenario.Items);
+ itemsViewOriginal2.Filter = ((o) =>
+ {
+ return ((Sample)o).Tags.Any(o=> o.Name.Equals("WithCertificate"));
+ });
+ itemsViewOriginal2.Refresh();
+ }
}
}
}
+
diff --git a/IdAceCodeEditor/Views/IdAceCodeEditor.xaml b/IdAceCodeEditor/Views/IdAceCodeEditor.xaml
index 100fc73..2445de5 100644
--- a/IdAceCodeEditor/Views/IdAceCodeEditor.xaml
+++ b/IdAceCodeEditor/Views/IdAceCodeEditor.xaml
@@ -6,7 +6,7 @@
xmlns:local="clr-namespace:IdAceCodeEditor"
mc:Ignorable="d"
Loaded="Window_Loaded"
- Title="IdAceCodeEditor" Height="500" Width="800">
+ Title="IDAceCodeEditor" Height="500" Width="800">
-
+
@@ -71,7 +71,7 @@
@@ -163,7 +163,8 @@
-
diff --git a/IdAceCodeEditor/getsitelogo.ico b/IdAceCodeEditor/getsitelogo.ico
new file mode 100644
index 0000000..f9f6821
Binary files /dev/null and b/IdAceCodeEditor/getsitelogo.ico differ
diff --git a/IdAceCodeEditor/getsitelogo.png b/IdAceCodeEditor/getsitelogo.png
new file mode 100644
index 0000000..f6f69ac
Binary files /dev/null and b/IdAceCodeEditor/getsitelogo.png differ