Microsoft identity platform and the OAuth 2.0 client credentials flow
Details about the client credentials flow
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow
Microsoft identity platform application authentication certificate credentials
Details about the certificate assertion value for the client credentials flow
| #!/usr/bin/env zsh | |
| function createAppRegistration (){ | |
| local appName=$1 | |
| appObjectId=`az ad app create --display-name "${appName}" --oauth2-allow-implicit-flow false --query "objectId" --output tsv` | |
| # Undocumented: You need to create the service principal to back the app registration | |
| # https://github.com/Azure/azure-cli/issues/12797#issuecomment-612138520 | |
| sp=`az ad sp create --id ${appObjectId}` | |
| appId=`az ad app show --id ${appObjectId} --query "appId" --output tsv` |
Session resources for developers from SK122 Building rich app experiences with Progressive Web Apps.
| <# Script to update the configuration (definition) of a Power Automate Flow | |
| # This is an EXAMPLE script and assumes you have a flow with the two placeholder values - amend the parameters and config accordingly #> | |
| <# | |
| .SYNOPSIS | |
| Update the config/any hardcoded values in a Flow using placeholders | |
| .EXAMPLE | |
| Update-FlowConfig.ps1 -SiteURL 'https://mytenant.sharepoint.com/sites/testsite' -ListID '0d1caedb-c38d-48b0-ba4a-e0fd5218c38b' -FlowPackagePath 'C:\Users\johndoe\Documents\Flows\MyFlow\' | |
| SiteURL : URL to the SharePoint site (assuming a SharePoint trigger) |
| /// <reference types="Cypress" /> | |
| const xml = `<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" | |
| xmlns:a="http://www.w3.org/2005/08/addressing" | |
| xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> | |
| <s:Header> | |
| <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action> | |
| <a:ReplyTo> |
| function getAadToken(user, password, identifier) { | |
| return puppeteer.launch({ headless: true }).then(async browser => { | |
| try { | |
| const page = await browser.newPage(); | |
| await page.goto("SITEURL"); | |
| await page.click( | |
| "LOGINBUTTON" | |
| ); |
| // stateless/dumb component in React Typescript | |
| import * as React from 'react'; | |
| interface IWelcomeProps { | |
| name: string, | |
| } | |
| const Welcome: React.SFC<IWelcomeProps> = ({ name }) => { | |
| return <h1>Hello, {name}</h1>; | |
| } |