6 | ASP.NET Core web app signing-in users to your Azure AD B2C tenant.
7 |
8 |
9 | This sample shows how to build a .NET Core MVC Web app that uses OpenID Connect to sign in users in an Azure AD B2C tenant. It leverages the ASP.NET Core OpenID Connect middleware.
10 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/Pods/Target Support Files/AppAuth/AppAuth.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppAuth
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AppAuth" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AppAuth"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppAuth
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) .NET Foundation. All rights reserved.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 | these files except in compliance with the License. You may obtain a copy of the
5 | License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software distributed
10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | specific language governing permissions and limitations under the License.
13 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule } from '@angular/core';
3 |
4 | import { AppComponent } from './app.component';
5 |
6 | //Sample: import the necessary libraries
7 | import { HttpClientModule } from '@angular/common/http';
8 | import { OAuthModule } from 'angular-oauth2-oidc';
9 |
10 | @NgModule({
11 | declarations: [
12 | AppComponent
13 | ],
14 | imports: [
15 | BrowserModule,
16 | //Sample: import the necessary libraries
17 | HttpClientModule,
18 | OAuthModule.forRoot()
19 | ],
20 | providers: [],
21 | bootstrap: [AppComponent]
22 | })
23 | export class AppModule { }
24 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/wwwroot/lib/jquery/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jquery",
3 | "main": "dist/jquery.js",
4 | "license": "MIT",
5 | "ignore": [
6 | "package.json"
7 | ],
8 | "keywords": [
9 | "jquery",
10 | "javascript",
11 | "browser",
12 | "library"
13 | ],
14 | "homepage": "https://github.com/jquery/jquery-dist",
15 | "version": "3.3.1",
16 | "_release": "3.3.1",
17 | "_resolution": {
18 | "type": "version",
19 | "tag": "3.3.1",
20 | "commit": "9e8ec3d10fad04748176144f108d7355662ae75e"
21 | },
22 | "_source": "https://github.com/jquery/jquery-dist.git",
23 | "_target": "^3.3.1",
24 | "_originalSource": "jquery",
25 | "_direct": true
26 | }
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/obj/Debug/netcoreapp3.1/WebApp-OpenIDConnect-DotNet.RazorAssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | using System;
11 | using System.Reflection;
12 |
13 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute("WebApp-OpenIDConnect-DotNet.Views")]
14 |
15 | // Generated by the MSBuild WriteCodeFragment class.
16 |
17 |
--------------------------------------------------------------------------------
/apps/spa-hellojs/source-code/.Net-Core-API-RBAC/MultiBearerAPI/MultiBearerAPI.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp2.1
5 | aspnet-MultiBearerAPI-CBB7C57A-28A0-4112-95AB-224461CF8597
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/apps/spa-hellojs-popup/source-code/.Net-Core-API-RBAC/MultiBearerAPI/MultiBearerAPI.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp2.1
5 | aspnet-MultiBearerAPI-CBB7C57A-28A0-4112-95AB-224461CF8597
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/android/app/build_defs.bzl:
--------------------------------------------------------------------------------
1 | """Helper definitions to glob .aar and .jar targets"""
2 |
3 | def create_aar_targets(aarfiles):
4 | for aarfile in aarfiles:
5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
6 | lib_deps.append(":" + name)
7 | android_prebuilt_aar(
8 | name = name,
9 | aar = aarfile,
10 | )
11 |
12 | def create_jar_targets(jarfiles):
13 | for jarfile in jarfiles:
14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
15 | lib_deps.append(":" + name)
16 | prebuilt_jar(
17 | name = name,
18 | binary_jar = jarfile,
19 | )
20 |
--------------------------------------------------------------------------------
/apps/web-nodejs-msal-embeddedSignin/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "webapp-oidc-nodejs",
3 | "version": "1.0.0",
4 | "description": "Authenticate users using B2C",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "node app.js",
8 | "start-dev": "nodemon app.js"
9 | },
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "@azure/msal-node": "^1.1.0",
14 | "bcrypt-nodejs": "0.0.3",
15 | "cookie-parser": "^1.4.5",
16 | "dotenv": "^9.0.1",
17 | "ejs": "^3.1.6",
18 | "ejs-locals": "^1.0.2",
19 | "express": "^4.17.1",
20 | "express-session": "^1.17.2",
21 | "mongoose": "^5.12.7",
22 | "morgan": "^1.10.0"
23 | },
24 | "devDependencies": {
25 | "nodemon": "^2.0.7"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "b2creact",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "start": "node node_modules/react-native/local-cli/cli.js start",
7 | "test": "jest"
8 | },
9 | "dependencies": {
10 | "react": "16.8.3",
11 | "react-native": "^0.59.6",
12 | "react-native-app-auth": "^3.1.0",
13 | "styled-components": "^3.4.9"
14 | },
15 | "devDependencies": {
16 | "@babel/core": "^7.4.4",
17 | "@babel/runtime": "^7.4.4",
18 | "babel-jest": "^24.7.1",
19 | "jest": "^24.7.1",
20 | "metro-react-native-babel-preset": "^0.53.1",
21 | "react-test-renderer": "16.8.3"
22 | },
23 | "jest": {
24 | "preset": "react-native"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/apps/spa-hellojs/source-code/.Net-Core-API-RBAC/MultiBearerAPI/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Threading.Tasks;
6 | using Microsoft.AspNetCore;
7 | using Microsoft.AspNetCore.Hosting;
8 | using Microsoft.Extensions.Configuration;
9 | using Microsoft.Extensions.Logging;
10 |
11 | namespace MultiBearerAPI
12 | {
13 | public class Program
14 | {
15 | public static void Main(string[] args)
16 | {
17 | CreateWebHostBuilder(args).Build().Run();
18 | }
19 |
20 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
21 | WebHost.CreateDefaultBuilder(args)
22 | .UseStartup();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/apps/web-java-springboot-api/src/main/java/com/fawltytowers2/javarestapib2c/Application.java:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation. All rights reserved.
2 | // Licensed under the MIT License.
3 |
4 | package com.fawltytowers2.javarestapib2c;
5 |
6 | import org.springframework.boot.SpringApplication;
7 | import org.springframework.boot.autoconfigure.SpringBootApplication;
8 | import org.springframework.cache.annotation.EnableCaching;
9 | import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
10 |
11 | @SpringBootApplication
12 | @EnableResourceServer
13 | @EnableCaching
14 | public class Application {
15 |
16 | public static void main(String[] args) {
17 | SpringApplication.run(Application.class, args);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/apps/web-nodejs-passportjs-embeddedSignin/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nodejs-b2c-oidc-webapp",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "node app.js",
8 | "start-dev": "nodemon app.js"
9 | },
10 | "keywords": [],
11 | "author": {
12 | "name": "azuread"
13 | },
14 | "license": "ISC",
15 | "dependencies": {
16 | "cookie-parser": "^1.4.5",
17 | "dotenv": "^10.0.0",
18 | "ejs": "^3.1.6",
19 | "ejs-locals": "^1.0.2",
20 | "express": "^4.17.1",
21 | "express-session": "^1.17.2",
22 | "method-override": "^3.0.0",
23 | "passport": "^0.4.1",
24 | "passport-azure-ad": "^4.3.1-beta.0"
25 | },
26 | "devDependencies": {
27 | "nodemon": "^2.0.12"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/apps/spa-hellojs-popup/source-code/.Net-Core-API-RBAC/MultiBearerAPI/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Threading.Tasks;
6 | using Microsoft.AspNetCore;
7 | using Microsoft.AspNetCore.Hosting;
8 | using Microsoft.Extensions.Configuration;
9 | using Microsoft.Extensions.Logging;
10 |
11 | namespace MultiBearerAPI
12 | {
13 | public class Program
14 | {
15 | public static void Main(string[] args)
16 | {
17 | CreateWebHostBuilder(args).Build().Run();
18 | }
19 |
20 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
21 | WebHost.CreateDefaultBuilder(args)
22 | .UseStartup();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 | import { browser, logging } from 'protractor';
3 |
4 | describe('workspace-project App', () => {
5 | let page: AppPage;
6 |
7 | beforeEach(() => {
8 | page = new AppPage();
9 | });
10 |
11 | it('should display welcome message', () => {
12 | page.navigateTo();
13 | expect(page.getTitleText()).toEqual('Welcome to my-app!');
14 | });
15 |
16 | afterEach(async () => {
17 | // Assert that there are no errors emitted from the browser
18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER);
19 | expect(logs).not.toContain(jasmine.objectContaining({
20 | level: logging.Level.SEVERE,
21 | } as logging.Entry));
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // This file can be replaced during build by using the `fileReplacements` array.
2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
3 | // The list of file replacements can be found in `angular.json`.
4 |
5 | export const environment = {
6 | production: false
7 | };
8 |
9 | /*
10 | * For easier debugging in development mode, you can import the following file
11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
12 | *
13 | * This import should be commented out in production mode because it will have a negative impact
14 | * on performance if an error is thrown.
15 | */
16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
17 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 | import { browser, logging } from 'protractor';
3 |
4 | describe('workspace-project App', () => {
5 | let page: AppPage;
6 |
7 | beforeEach(() => {
8 | page = new AppPage();
9 | });
10 |
11 | it('should display welcome message', () => {
12 | page.navigateTo();
13 | expect(page.getTitleText()).toEqual('Welcome to my-app!');
14 | });
15 |
16 | afterEach(async () => {
17 | // Assert that there are no errors emitted from the browser
18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER);
19 | expect(logs).not.toContain(jasmine.objectContaining({
20 | level: logging.Level.SEVERE,
21 | } as logging.Entry));
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // This file can be replaced during build by using the `fileReplacements` array.
2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
3 | // The list of file replacements can be found in `angular.json`.
4 |
5 | export const environment = {
6 | production: false
7 | };
8 |
9 | /*
10 | * For easier debugging in development mode, you can import the following file
11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
12 | *
13 | * This import should be commented out in production mode because it will have a negative impact
14 | * on performance if an error is thrown.
15 | */
16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
17 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/b2creact/AppDelegate.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 | #import
10 | #import "RNAppAuthAuthorizationFlowManager.h"
11 |
12 | //@interface AppDelegate : UIResponder
13 |
14 |
15 | @interface AppDelegate : UIResponder
16 |
17 | @property(nonatomic, weak)
18 | idauthorizationFlowManagerDelegate;
19 |
20 | @property (nonatomic, strong) UIWindow *window;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/apps/web-java-springboot-api/src/main/java/com/fawltytowers2/javarestapib2c/model/Item.java:
--------------------------------------------------------------------------------
1 | package com.fawltytowers2.javarestapib2c.model;
2 |
3 | /**
4 | * This is simple Item model class
5 | */
6 | public class Item {
7 | private String itemId;
8 | private String itemName;
9 |
10 | public Item(String itemId, String itemName) {
11 | this.setItemId(itemId);
12 | this.setItemName(itemName);
13 | }
14 |
15 | public void setItemId(String itemId) {
16 | this.itemId = itemId;
17 | }
18 |
19 | public String getItemId() {
20 | return itemId;
21 | }
22 |
23 | public void setItemName(String itemName) {
24 | this.itemName = itemName;
25 | }
26 |
27 | public String getItemName() {
28 | return itemName;
29 | }
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/apps/web-java-springboot-api/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=8081
2 | logging.level.org.springframework.oauth2=DEBUG
3 | logging.level.org.springframework.jwt=DEBUG
4 | logging.level.org.springframework.cache=DEBUG
5 |
6 | security.oauth2.client.authority=https://yourtenant.b2clogin.com/tfp/yourtenant.onmicrosoft.com/
7 | security.oauth2.client.client-id=...api client_id...
8 | security.oauth2.client.client-secret=...api secret/key...
9 |
10 | security.oauth2.resource.id=...api for client_id...
11 | security.oauth2.scope.access-as-user=https://yourtenant.onmicrosoft.com/your-api-name/demo.read
12 | security.oauth2.resource.jwt.key-uri=https://yourtenant.b2clogin.com/yourtenant.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1a_signup_signin
13 | security.oauth2.issuer=https://yourtenant.b2clogin.com/yourtenant-guid/v2.0/
14 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/b2creact/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/components/Button.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | import React, { Component } from 'react';
4 | import { Platform } from 'react-native';
5 | import styled from 'styled-components/native';
6 |
7 | type Props = {
8 | text: string,
9 | color: string,
10 | onPress: () => any
11 | };
12 |
13 | const ButtonBox = styled.TouchableOpacity.attrs({ activeOpacity: 0.8 })`
14 | height: 50px;
15 | flex: 1;
16 | margin: 5px;
17 | align-items: center;
18 | justify-content: center;
19 | background-color: ${props => props.color};
20 | `;
21 |
22 | const ButtonText = styled.Text`
23 | color: white;
24 | `;
25 |
26 | const Button = ({ text, color, onPress }: Props) => (
27 |
28 | {text}
29 |
30 | );
31 |
32 | export default Button;
33 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 | # Only exists if Bazel was run
8 | /bazel-out
9 |
10 | # dependencies
11 | /node_modules
12 |
13 | # profiling files
14 | chrome-profiler-events.json
15 | speed-measure-plugin.json
16 |
17 | # IDEs and editors
18 | /.idea
19 | .project
20 | .classpath
21 | .c9/
22 | *.launch
23 | .settings/
24 | *.sublime-workspace
25 |
26 | # IDE - VSCode
27 | .vscode/*
28 | !.vscode/settings.json
29 | !.vscode/tasks.json
30 | !.vscode/launch.json
31 | !.vscode/extensions.json
32 | .history/*
33 |
34 | # misc
35 | /.sass-cache
36 | /connect.lock
37 | /coverage
38 | /libpeerconnection.log
39 | npm-debug.log
40 | yarn-error.log
41 | testem.log
42 | /typings
43 |
44 | # System Files
45 | .DS_Store
46 | Thumbs.db
47 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 | # Only exists if Bazel was run
8 | /bazel-out
9 |
10 | # dependencies
11 | /node_modules
12 |
13 | # profiling files
14 | chrome-profiler-events.json
15 | speed-measure-plugin.json
16 |
17 | # IDEs and editors
18 | /.idea
19 | .project
20 | .classpath
21 | .c9/
22 | *.launch
23 | .settings/
24 | *.sublime-workspace
25 |
26 | # IDE - VSCode
27 | .vscode/*
28 | !.vscode/settings.json
29 | !.vscode/tasks.json
30 | !.vscode/launch.json
31 | !.vscode/extensions.json
32 | .history/*
33 |
34 | # misc
35 | /.sass-cache
36 | /connect.lock
37 | /coverage
38 | /libpeerconnection.log
39 | npm-debug.log
40 | yarn-error.log
41 | testem.log
42 | /typings
43 |
44 | # System Files
45 | .DS_Store
46 | Thumbs.db
47 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "AzureAdB2C": {
3 | "Instance": "https://login.contoso.com", //Must be a custom domain name. For example: https://login.contoso.com
4 | "ClientId": "",
5 | "Domain": "contoso.onmicrosoft.com",
6 | "SignedOutCallbackPath": "/signout/B2C_1A_signup_signin",
7 | "SignUpSignInPolicyId": "B2C_1A_signup_signin", //Note the policy name starts with B2C_1A, indicating this is a custom policy. Only custom policies can be used with Embedded sign-in.
8 | "ResetPasswordPolicyId": "B2C_1A_PasswordReset",
9 | "EditProfilePolicyId": "B2C_1A_ProfileEdit"
10 | },
11 | "Logging": {
12 | "LogLevel": {
13 | "Default": "Information",
14 | "Microsoft": "Warning",
15 | "Microsoft.Hosting.Lifetime": "Information"
16 | }
17 | },
18 | "AllowedHosts": "*"
19 | }
20 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/b2creactTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/e2e/protractor.conf.js:
--------------------------------------------------------------------------------
1 | // Protractor configuration file, see link for more information
2 | // https://github.com/angular/protractor/blob/master/lib/config.ts
3 |
4 | const { SpecReporter } = require('jasmine-spec-reporter');
5 |
6 | exports.config = {
7 | allScriptsTimeout: 11000,
8 | specs: [
9 | './src/**/*.e2e-spec.ts'
10 | ],
11 | capabilities: {
12 | 'browserName': 'chrome'
13 | },
14 | directConnect: true,
15 | baseUrl: 'http://localhost:4200/',
16 | framework: 'jasmine',
17 | jasmineNodeOpts: {
18 | showColors: true,
19 | defaultTimeoutInterval: 30000,
20 | print: function() {}
21 | },
22 | onPrepare() {
23 | require('ts-node').register({
24 | project: require('path').join(__dirname, './tsconfig.e2e.json')
25 | });
26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27 | }
28 | };
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/e2e/protractor.conf.js:
--------------------------------------------------------------------------------
1 | // Protractor configuration file, see link for more information
2 | // https://github.com/angular/protractor/blob/master/lib/config.ts
3 |
4 | const { SpecReporter } = require('jasmine-spec-reporter');
5 |
6 | exports.config = {
7 | allScriptsTimeout: 11000,
8 | specs: [
9 | './src/**/*.e2e-spec.ts'
10 | ],
11 | capabilities: {
12 | 'browserName': 'chrome'
13 | },
14 | directConnect: true,
15 | baseUrl: 'http://localhost:4200/',
16 | framework: 'jasmine',
17 | jasmineNodeOpts: {
18 | showColors: true,
19 | defaultTimeoutInterval: 30000,
20 | print: function() {}
21 | },
22 | onPrepare() {
23 | require('ts-node').register({
24 | project: require('path').join(__dirname, './tsconfig.e2e.json')
25 | });
26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27 | }
28 | };
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/b2creact-tvOSTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/src/app/auth.config.ts:
--------------------------------------------------------------------------------
1 | import { AuthConfig } from 'angular-oauth2-oidc';
2 |
3 | export const authConfig: AuthConfig = {
4 |
5 | // Url of the Identity Provider
6 | issuer: 'https://your-tenant.b2clogin.com/de678512-5915-46fd-ae83-a5df4ec052be/v2.0/',
7 |
8 | // URL of the SPA to redirect the user to after login
9 | redirectUri: window.location.origin + '/',
10 |
11 | // The SPA's id. The SPA is registered with this id at the auth-server
12 | clientId: 'ebce2d28-8fb8-4cc7-83ae-accc9d73ee9d',
13 |
14 | // set the scope for the permissions the client should request
15 | // The first three are defined by OIDC. The 4th is a usecase-specific one
16 | //scope: 'openid ebce2d28-8fb8-4cc7-83ae-accc9d73ee9d',
17 | scope: 'openid https://your-tenant.onmicrosoft.com/spa-app/read https://your-tenant.onmicrosoft.com/spa-app/write',
18 |
19 | strictDiscoveryDocumentValidation: false
20 |
21 | }
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/bin/Debug/netcoreapp3.1/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "AzureAdB2C": {
3 | "Instance": "https://login.fawzytech.com", //Must be a custom domain name. For example: https://login.contoso.com
4 | "ClientId": "1b94c13a-2f5a-4c02-8d9a-077a3edb201e",
5 | "Domain": "haelshabb2c.onmicrosoft.com",
6 | "SignedOutCallbackPath": "/signout/B2C_1A_signup_signin",
7 | "SignUpSignInPolicyId": "B2C_1A_signup_signin", //Note the policy name starts with B2C_1A, indicating this is a custom policy. Only custom policies can be used with Embedded sign-in.
8 | "ResetPasswordPolicyId": "B2C_1A_PasswordReset",
9 | "EditProfilePolicyId": "B2C_1A_ProfileEdit"
10 | },
11 | "Logging": {
12 | "LogLevel": {
13 | "Default": "Information",
14 | "Microsoft": "Warning",
15 | "Microsoft.Hosting.Lifetime": "Information"
16 | }
17 | },
18 | "AllowedHosts": "*"
19 | }
20 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/obj/Debug/netcoreapp3.1/WebApp-OpenIDConnect-DotNet.MvcApplicationPartsAssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | using System;
11 | using System.Reflection;
12 |
13 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Microsoft.Identity.Web")]
14 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Microsoft.Identity.Web.UI")]
15 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Microsoft.Identity.Web.UI.Views")]
16 |
17 | // Generated by the MSBuild WriteCodeFragment class.
18 |
19 |
--------------------------------------------------------------------------------
/apps/spa-hellojs/source-code/.Net-Core-API-RBAC/MultiBearerAPI/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/launchsettings.json",
3 | "iisSettings": {
4 | "windowsAuthentication": false,
5 | "anonymousAuthentication": true,
6 | "iisExpress": {
7 | "applicationUrl": "http://localhost:31719",
8 | "sslPort": 44330
9 | }
10 | },
11 | "profiles": {
12 | "IIS Express": {
13 | "commandName": "IISExpress",
14 | "launchBrowser": true,
15 | "launchUrl": "api/values",
16 | "environmentVariables": {
17 | "ASPNETCORE_ENVIRONMENT": "Development"
18 | }
19 | },
20 | "MultiBearerAPI": {
21 | "commandName": "Project",
22 | "launchBrowser": true,
23 | "launchUrl": "api/values",
24 | "applicationUrl": "https://localhost:5001;http://localhost:5000",
25 | "environmentVariables": {
26 | "ASPNETCORE_ENVIRONMENT": "Development"
27 | }
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/apps/spa-hellojs-popup/source-code/.Net-Core-API-RBAC/MultiBearerAPI/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/launchsettings.json",
3 | "iisSettings": {
4 | "windowsAuthentication": false,
5 | "anonymousAuthentication": true,
6 | "iisExpress": {
7 | "applicationUrl": "http://localhost:31719",
8 | "sslPort": 44330
9 | }
10 | },
11 | "profiles": {
12 | "IIS Express": {
13 | "commandName": "IISExpress",
14 | "launchBrowser": true,
15 | "launchUrl": "api/values",
16 | "environmentVariables": {
17 | "ASPNETCORE_ENVIRONMENT": "Development"
18 | }
19 | },
20 | "MultiBearerAPI": {
21 | "commandName": "Project",
22 | "launchBrowser": true,
23 | "launchUrl": "api/values",
24 | "applicationUrl": "https://localhost:5001;http://localhost:5000",
25 | "environmentVariables": {
26 | "ASPNETCORE_ENVIRONMENT": "Development"
27 | }
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
--------------------------------------------------------------------------------
/apps/spa-hellojs/source-code/.Net-Core-API-RBAC/MultiBearerAPI/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "AzureAdB2C": {
3 | "Instance": "https://b2cprod.b2clogin.com",
4 | "ClientId": "44b93b96-8d2e-4eef-b028-73dc5968d966", //App Id for Backend API App Reg
5 | "Domain": "b2cprod.onmicrosoft.com",
6 | "SignUpSignInPolicyId": "b2c_1a_aad_slack_susi",
7 | "TenantId": "d6f33888-948c-4c1f-9b50-1590f171fc70"
8 | },
9 | "AzureAd": {
10 | "Instance": "https://login.microsoftonline.com",
11 | "ClientId": "7cd09a5b-b445-4c5c-920a-0ed70fd5a70c", //App Id for Backend API App Reg, can be B2C app reg or AAD app reg
12 | "Domain": "b2cprod.onmicrosoft.com", //Tenant where App reg was created, doesnt have to be the same as front end
13 | "TenantId": "d6f33888-948c-4c1f-9b50-1590f171fc70" //TenantId where App reg was created, doesnt have to be the same as front end
14 | },
15 | "Logging": {
16 | "LogLevel": {
17 | "Default": "Warning"
18 | }
19 | },
20 | "AllowedHosts": "*"
21 | }
22 |
--------------------------------------------------------------------------------
/apps/spa-hellojs-popup/source-code/.Net-Core-API-RBAC/MultiBearerAPI/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "AzureAdB2C": {
3 | "Instance": "https://b2cprod.b2clogin.com",
4 | "ClientId": "44b93b96-8d2e-4eef-b028-73dc5968d966", //App Id for Backend API App Reg
5 | "Domain": "b2cprod.onmicrosoft.com",
6 | "SignUpSignInPolicyId": "b2c_1a_aad_slack_susi",
7 | "TenantId": "d6f33888-948c-4c1f-9b50-1590f171fc70"
8 | },
9 | "AzureAd": {
10 | "Instance": "https://login.microsoftonline.com",
11 | "ClientId": "7cd09a5b-b445-4c5c-920a-0ed70fd5a70c", //App Id for Backend API App Reg, can be B2C app reg or AAD app reg
12 | "Domain": "b2cprod.onmicrosoft.com", //Tenant where App reg was created, doesnt have to be the same as front end
13 | "TenantId": "d6f33888-948c-4c1f-9b50-1590f171fc70" //TenantId where App reg was created, doesnt have to be the same as front end
14 | },
15 | "Logging": {
16 | "LogLevel": {
17 | "Default": "Warning"
18 | }
19 | },
20 | "AllowedHosts": "*"
21 | }
22 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/Views/Shared/Error.cshtml:
--------------------------------------------------------------------------------
1 | @model ErrorViewModel
2 | @{
3 | ViewData["Title"] = "Error";
4 | }
5 |
6 |
Error.
7 |
An error occurred while processing your request.
8 |
9 | @if (Model.ShowRequestId)
10 | {
11 |
12 | Request ID:@Model.RequestId
13 |
14 | }
15 |
16 |
Development Mode
17 |
18 | Swapping to Development environment will display more detailed information about the error that occurred.
19 |
20 |
21 | The Development environment shouldn't be enabled for deployed applications.
22 | It can result in displaying sensitive information from exceptions to end users.
23 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
24 | and restarting the app.
25 |
26 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/android/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext {
5 | buildToolsVersion = "28.0.3"
6 | minSdkVersion = 16
7 | compileSdkVersion = 28
8 | targetSdkVersion = 28
9 | supportLibVersion = "28.0.0"
10 | }
11 | repositories {
12 | google()
13 | jcenter()
14 | }
15 | dependencies {
16 | classpath 'com.android.tools.build:gradle:3.3.1'
17 |
18 | // NOTE: Do not place your application dependencies here; they belong
19 | // in the individual module build.gradle files
20 | }
21 | }
22 |
23 | allprojects {
24 | repositories {
25 | mavenLocal()
26 | google()
27 | jcenter()
28 | maven {
29 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
30 | url "$rootDir/../node_modules/react-native/android"
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/wwwroot/css/site.css:
--------------------------------------------------------------------------------
1 | /* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification\
2 | for details on configuring this project to bundle and minify static web assets. */
3 | body {
4 | padding-top: 50px;
5 | padding-bottom: 20px;
6 | }
7 |
8 | /* Wrapping element */
9 | /* Set some basic padding to keep content from hitting the edges */
10 | .body-content {
11 | padding-left: 15px;
12 | padding-right: 15px;
13 | }
14 |
15 | /* Carousel */
16 | .carousel-caption p {
17 | font-size: 20px;
18 | line-height: 1.4;
19 | }
20 |
21 | /* Make .svg files in the carousel display properly in older browsers */
22 | .carousel-inner .item img[src$=".svg"] {
23 | width: 100%;
24 | }
25 |
26 | /* QR code generator */
27 | #qrCode {
28 | margin: 15px;
29 | }
30 |
31 | /* Hide/rearrange for smaller screens */
32 | @media screen and (max-width: 767px) {
33 | /* Hide captions */
34 | .carousel-caption {
35 | display: none;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/Controllers/HomeController.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Authorization;
2 | using Microsoft.AspNetCore.Mvc;
3 | using System.Diagnostics;
4 | using WebApp_OpenIDConnect_DotNet.Models;
5 |
6 | namespace WebApp_OpenIDConnect_DotNet.Controllers
7 | {
8 | public class HomeController : Controller
9 | {
10 |
11 | public IActionResult Index()
12 | {
13 | return View();
14 | }
15 |
16 | [Authorize]
17 | public IActionResult Claims()
18 | {
19 | return View();
20 | }
21 |
22 | [AllowAnonymous]
23 | public IActionResult Privacy()
24 | {
25 | return View();
26 | }
27 |
28 | [AllowAnonymous]
29 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
30 | public IActionResult Error()
31 | {
32 | return View(new ErrorViewModel {RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier});
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/WebApp-OpenIDConnect-DotNet.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 | aspnet-WebApp_OpenIDConnect_DotNet-81EA87AD-E64D-4755-A1CC-5EA47F49B5D8
6 | 0
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/apps/spa-hellojs/source-code/B2C-v2jsapp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.25420.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2C-v2jsapp", "B2C-v2jsapp\B2C-v2jsapp.csproj", "{F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/apps/spa-hellojs-popup/source-code/B2C-v2jsapp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.25420.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2C-v2jsapp", "B2C-v2jsapp\B2C-v2jsapp.csproj", "{F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {F1DDF3FC-8D43-495F-A5C8-852C6B3F8799}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | project.xcworkspace
24 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 |
33 | # node.js
34 | #
35 | node_modules/
36 | npm-debug.log
37 | yarn-error.log
38 |
39 | # BUCK
40 | buck-out/
41 | \.buckd/
42 | *.keystore
43 |
44 | # fastlane
45 | #
46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47 | # screenshots whenever they are needed.
48 | # For more information about the recommended setup visit:
49 | # https://docs.fastlane.tools/best-practices/source-control/
50 |
51 | */fastlane/report.xml
52 | */fastlane/Preview.html
53 | */fastlane/screenshots
54 |
55 | # Bundle artifact
56 | *.jsbundle
57 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/Pods/AppAuth/Source/OIDResponseTypes.m:
--------------------------------------------------------------------------------
1 | /*! @file OIDResponseTypes.m
2 | @brief AppAuth iOS SDK
3 | @copyright
4 | Copyright 2015 Google Inc. All Rights Reserved.
5 | @copydetails
6 | Licensed under the Apache License, Version 2.0 (the "License");
7 | you may not use this file except in compliance with the License.
8 | You may obtain a copy of the License at
9 |
10 | http://www.apache.org/licenses/LICENSE-2.0
11 |
12 | Unless required by applicable law or agreed to in writing, software
13 | distributed under the License is distributed on an "AS IS" BASIS,
14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | See the License for the specific language governing permissions and
16 | limitations under the License.
17 | */
18 |
19 | #import "OIDResponseTypes.h"
20 |
21 | NSString *const OIDResponseTypeCode = @"code";
22 |
23 | NSString *const OIDResponseTypeToken = @"token";
24 |
25 | NSString *const OIDResponseTypeIDToken = @"id_token";
26 |
--------------------------------------------------------------------------------
/apps/web-nodejs-msal-embeddedSignin/config/policies.js:
--------------------------------------------------------------------------------
1 | const b2cPolicies = {
2 | names: {
3 | signUpSignIn: "B2C_1A_EMBEDDEDSIGNIN_SIGNUP_SIGNIN",
4 | resetPassword: "B2C_1A_EMBEDDEDSIGNIN_PASSWORDRESET",
5 | editprofile: "B2C_1A_EMBEDDEDSIGNIN_PROFILEEDIT",
6 | },
7 | authorities: {
8 | signUpSignIn: {
9 | authority: "https://login.yourcustomdomain.com/yourcustomdomain.com/B2C_1A_EMBEDDEDSIGNIN_SIGNUP_SIGNIN",
10 | },
11 | resetPassword: {
12 | authority: "https://login.yourcustomdomain.com/yourcustomdomain.com/B2C_1A_EMBEDDEDSIGNIN_PASSWORDRESET",
13 | },
14 | editprofile: {
15 | authority: "https://login.yourcustomdomain.com/yourcustomdomain.com/B2C_1A_EMBEDDEDSIGNIN_PROFILEEDIT",
16 | },
17 | },
18 | authorityDomain: "yourcustomdomain.com",
19 | destroySessionUrl: "https://login.yourcustomdomain.com/yourcustomdomain.com/oauth2/v2.0/logout?p=B2C_1A_EMBEDDEDSIGNIN_SIGNUP_SIGNIN" + "&post_logout_redirect_uri=https://yourcustomdomain.com/"
20 | }
21 |
22 | module.exports = b2cPolicies;
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
13 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/wwwroot/lib/jquery-validation/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jquery-validation",
3 | "homepage": "https://jqueryvalidation.org/",
4 | "repository": {
5 | "type": "git",
6 | "url": "git://github.com/jquery-validation/jquery-validation.git"
7 | },
8 | "authors": [
9 | "Jörn Zaefferer "
10 | ],
11 | "description": "Form validation made easy",
12 | "main": "dist/jquery.validate.js",
13 | "keywords": [
14 | "forms",
15 | "validation",
16 | "validate"
17 | ],
18 | "license": "MIT",
19 | "ignore": [
20 | "**/.*",
21 | "node_modules",
22 | "bower_components",
23 | "test",
24 | "demo",
25 | "lib"
26 | ],
27 | "dependencies": {
28 | "jquery": ">= 1.7.2"
29 | },
30 | "version": "1.17.0",
31 | "_release": "1.17.0",
32 | "_resolution": {
33 | "type": "version",
34 | "tag": "1.17.0",
35 | "commit": "fc9b12d3bfaa2d0c04605855b896edb2934c0772"
36 | },
37 | "_source": "https://github.com/jzaefferer/jquery-validation.git",
38 | "_target": "^1.17.0",
39 | "_originalSource": "jquery-validation",
40 | "_direct": true
41 | }
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/README.md:
--------------------------------------------------------------------------------
1 | # MyApp
2 |
3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.5.
4 |
5 | ## Development server
6 |
7 | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
8 |
9 | ## Code scaffolding
10 |
11 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
12 |
13 | ## Build
14 |
15 | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
16 |
17 | ## Running unit tests
18 |
19 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
20 |
21 | ## Running end-to-end tests
22 |
23 | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
24 |
25 | ## Further help
26 |
27 | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
28 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/src/app/app.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed, async } from '@angular/core/testing';
2 | import { AppComponent } from './app.component';
3 |
4 | describe('AppComponent', () => {
5 | beforeEach(async(() => {
6 | TestBed.configureTestingModule({
7 | declarations: [
8 | AppComponent
9 | ],
10 | }).compileComponents();
11 | }));
12 |
13 | it('should create the app', () => {
14 | const fixture = TestBed.createComponent(AppComponent);
15 | const app = fixture.debugElement.componentInstance;
16 | expect(app).toBeTruthy();
17 | });
18 |
19 | it(`should have as title 'my-app'`, () => {
20 | const fixture = TestBed.createComponent(AppComponent);
21 | const app = fixture.debugElement.componentInstance;
22 | expect(app.title).toEqual('my-app');
23 | });
24 |
25 | it('should render title in a h1 tag', () => {
26 | const fixture = TestBed.createComponent(AppComponent);
27 | fixture.detectChanges();
28 | const compiled = fixture.debugElement.nativeElement;
29 | expect(compiled.querySelector('h1').textContent).toContain('Welcome to my-app!');
30 | });
31 | });
32 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/src/app/app.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed, async } from '@angular/core/testing';
2 | import { AppComponent } from './app.component';
3 |
4 | describe('AppComponent', () => {
5 | beforeEach(async(() => {
6 | TestBed.configureTestingModule({
7 | declarations: [
8 | AppComponent
9 | ],
10 | }).compileComponents();
11 | }));
12 |
13 | it('should create the app', () => {
14 | const fixture = TestBed.createComponent(AppComponent);
15 | const app = fixture.debugElement.componentInstance;
16 | expect(app).toBeTruthy();
17 | });
18 |
19 | it(`should have as title 'my-app'`, () => {
20 | const fixture = TestBed.createComponent(AppComponent);
21 | const app = fixture.debugElement.componentInstance;
22 | expect(app.title).toEqual('my-app');
23 | });
24 |
25 | it('should render title in a h1 tag', () => {
26 | const fixture = TestBed.createComponent(AppComponent);
27 | fixture.detectChanges();
28 | const compiled = fixture.debugElement.nativeElement;
29 | expect(compiled.querySelector('h1').textContent).toContain('Welcome to my-app!');
30 | });
31 | });
32 |
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/README.md:
--------------------------------------------------------------------------------
1 | # MyApp
2 |
3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.5.
4 |
5 | ## Development server
6 |
7 | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
8 |
9 | ## Code scaffolding
10 |
11 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
12 |
13 | ## Build
14 |
15 | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
16 |
17 | ## Running unit tests
18 |
19 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
20 |
21 | ## Running end-to-end tests
22 |
23 | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
24 |
25 | ## Further help
26 |
27 | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
28 |
--------------------------------------------------------------------------------
/apps/web-java-springboot-api/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM maven:3.6.0-jdk-8-alpine AS build
2 |
3 | # Upgrade Alpine packages and install OpenSSL
4 | RUN apk update && \
5 | apk upgrade && \
6 | apk add --no-cache openssl nss-dev nss
7 |
8 | COPY src /usr/src/app/src
9 | COPY pom.xml /usr/src/app
10 |
11 | WORKDIR /usr/src/app
12 |
13 | ENV MAVEN_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1"
14 |
15 | RUN mvn -T 1C -f /usr/src/app/pom.xml clean package
16 |
17 | RUN ls -l /usr/src/app/target
18 | ############################################################################
19 |
20 | # Base Alpine Linux based image with OpenJDK JRE only
21 | FROM openjdk:8-jdk-alpine
22 |
23 | # Project maintainer
24 | LABEL maintainer="cljung@microsoft.com"
25 |
26 | # Add a volume pointing to /tmp
27 | VOLUME /tmp
28 |
29 | WORKDIR /opt
30 | COPY --from=build /usr/src/app/target/java-rest-api-b2c*.jar /opt/app.jar
31 | RUN ls -l /opt
32 | # Make port 8080 available to the world outside this container
33 | EXPOSE 8081
34 |
35 | # Setup application entry point
36 | ENTRYPOINT ["java","-jar","/opt/app.jar"]
37 |
38 | ############################################################################
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/Pods/AppAuth/Source/OIDScopes.m:
--------------------------------------------------------------------------------
1 | /*! @file OIDScopes.m
2 | @brief AppAuth iOS SDK
3 | @copyright
4 | Copyright 2015 Google Inc. All Rights Reserved.
5 | @copydetails
6 | Licensed under the Apache License, Version 2.0 (the "License");
7 | you may not use this file except in compliance with the License.
8 | You may obtain a copy of the License at
9 |
10 | http://www.apache.org/licenses/LICENSE-2.0
11 |
12 | Unless required by applicable law or agreed to in writing, software
13 | distributed under the License is distributed on an "AS IS" BASIS,
14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | See the License for the specific language governing permissions and
16 | limitations under the License.
17 | */
18 |
19 | #import "OIDScopes.h"
20 |
21 | NSString *const OIDScopeOpenID = @"openid";
22 |
23 | NSString *const OIDScopeProfile = @"profile";
24 |
25 | NSString *const OIDScopeEmail = @"email";
26 |
27 | NSString *const OIDScopeAddress = @"address";
28 |
29 | NSString *const OIDScopePhone = @"phone";
30 |
--------------------------------------------------------------------------------
/apps/spa-hellojs/source-code/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Microsoft Corporation
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/apps/spa-hellojs-popup/source-code/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Microsoft Corporation
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/src/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage-istanbul-reporter'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../coverage/my-app'),
20 | reports: ['html', 'lcovonly', 'text-summary'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false,
30 | restartOnFileChange: true
31 | });
32 | };
33 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/wwwroot/lib/bootstrap/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bootstrap",
3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
4 | "keywords": [
5 | "css",
6 | "js",
7 | "less",
8 | "mobile-first",
9 | "responsive",
10 | "front-end",
11 | "framework",
12 | "web"
13 | ],
14 | "homepage": "http://getbootstrap.com",
15 | "license": "MIT",
16 | "moduleType": "globals",
17 | "main": [
18 | "less/bootstrap.less",
19 | "dist/js/bootstrap.js"
20 | ],
21 | "ignore": [
22 | "/.*",
23 | "_config.yml",
24 | "CNAME",
25 | "composer.json",
26 | "CONTRIBUTING.md",
27 | "docs",
28 | "js/tests",
29 | "test-infra"
30 | ],
31 | "dependencies": {
32 | "jquery": "1.9.1 - 3"
33 | },
34 | "version": "3.3.7",
35 | "_release": "3.3.7",
36 | "_resolution": {
37 | "type": "version",
38 | "tag": "v3.3.7",
39 | "commit": "0b9c4a4007c44201dce9a6cc1a38407005c26c86"
40 | },
41 | "_source": "https://github.com/twbs/bootstrap.git",
42 | "_target": "v3.3.7",
43 | "_originalSource": "bootstrap",
44 | "_direct": true
45 | }
--------------------------------------------------------------------------------
/apps/spa-angular-oauth2-oidc/source-code/my-app/src/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage-istanbul-reporter'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../coverage/my-app'),
20 | reports: ['html', 'lcovonly', 'text-summary'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false,
30 | restartOnFileChange: true
31 | });
32 | };
33 |
--------------------------------------------------------------------------------
/apps/mobile-react-native-ios-android-appauth/source-code/ios/Pods/AppAuth/Source/OIDGrantTypes.m:
--------------------------------------------------------------------------------
1 | /*! @file OIDGrantTypes.m
2 | @brief AppAuth iOS SDK
3 | @copyright
4 | Copyright 2015 Google Inc. All Rights Reserved.
5 | @copydetails
6 | Licensed under the Apache License, Version 2.0 (the "License");
7 | you may not use this file except in compliance with the License.
8 | You may obtain a copy of the License at
9 |
10 | http://www.apache.org/licenses/LICENSE-2.0
11 |
12 | Unless required by applicable law or agreed to in writing, software
13 | distributed under the License is distributed on an "AS IS" BASIS,
14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | See the License for the specific language governing permissions and
16 | limitations under the License.
17 | */
18 |
19 | #import "OIDGrantTypes.h"
20 |
21 | NSString *const OIDGrantTypeAuthorizationCode = @"authorization_code";
22 |
23 | NSString *const OIDGrantTypeRefreshToken = @"refresh_token";
24 |
25 | NSString *const OIDGrantTypePassword = @"password";
26 |
27 | NSString *const OIDGrantTypeClientCredentials = @"client_credentials";
28 |
--------------------------------------------------------------------------------
/apps/web-dotnet-core-b2c-embedded/source-code/wwwroot/lib/bootstrap/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2011-2016 Twitter, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/apps/spa-angular-auth-oidc-client/source-code/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |