Konfigurera enkel inloggning med Microsoft Entra ID
Artikel
Copilot Studio ger stöd för enkel inloggning aktiverad (SSO). SSO möjliggör att copiloter på din webbplats kan logga in användare automatiskt om de redan är inloggade på sidan eller i appen där copilot är implementerad.
Exempelvis kanske copilot lagras på företagets intranät eller i ett program som användaren redan loggats in på.
Det finns fyra huvudsteg för att konfigurera SSO för Copilot Studio:
Skapa en programregistrering i Microsoft Entra ID för din anpassade arbetsyta.
Definiera ett anpassat omfång för din copilot.
Konfigurera autentisering i Copilot Studio för att aktivera SSO.
Konfigurera din anpassade HTML-kod för arbetsyta i syfte att aktivera SSO.
1 Om du även har Teams-kanalen aktiverad måste du följa konfigurationsanvisningarna i Konfigurera enkel inloggning med Microsoft Entra ID för copilots i Microsoft Teams dokumentationen. Om du inte konfigurerar SSO-inställningarna för Teams enligt anvisningarna på den sidan kommer dina användare alltid att misslyckas med att autentisera sig när de använder Teams-kanalen.
Följ instruktionerna för att skapa en registrering av autentiseringsappen igen, för att skapa en andra appregistrering, som fungerar som din appregistrering för arbetsytan.
Lägg till arbetyteappens registrerings-ID i registreringen av autentiseringsappen.
Lägg till token för utbytes-URL
Om du vill uppdatera Microsoft Entra ID-autentiseringsinställningarna i Copilot Studio måste du lägga till token för utbytes-URL så att appen och Copilot Studio kan dela information.
På bladet för registreringen av autentiseringsappen i Azure-portalen går du till Exponera ett API.
Under Omfång välj du ikonen Kopiera till Urklipp .
I Copilot Studio, i navigeringsmenyn under Inställningar, välj Säkerhet och välj panelen Autentisering tile.
För Utbytes-URL för token (krävs för SSO), klistra in omfattningen du kopierade tidigare.
Välj Spara.
Konfigurera registrering av arbetsyteapp
När du har skapat din registrering av arbetsyteapp, gå till Autentisering och väljer sedan Lägg till en plattform.
Under Plattformskonfigurationer välj Lägg till en plattform, välj Webb.
Under Omdirigerings-URI, ange URL för din webbsida t.ex. http://contoso.com/index.html.
I avsnittet Implicita bidrag och hybridflöden aktivera båda Åtkomsttoken (används för implicita flöden) och Åtkomsttoken (används för implicita flöden).
Välj Konfigurera.
Hitta copilot token slutpunkt URL
I Copilot Studio öppnar du din copilot och väljer Kanaler.
Välj Mobilapp.
Under tokenslutpunkt, välj kopiera.
Konfigurera SSO på webbsidan
Använd koden som finns i Copilot Studio' GitHub lagringsplats för att skapa en webbplats för omdirigerings-URL. Kopiera koden från GitHub-lagringsplatsen och ändra den med hjälp av följande instruktioner.
Obs
Koden på GitHub-lagringsplatsen kräver att användaren måste välja en inloggningsknapp eller logga in från en annan webbplats. Om du vill aktivera automatisk inloggning lägger du till följande kod i början av aysnc function main():
(async function main() {
if (clientApplication.getAccount() == null) {
await clientApplication.loginPopup(requestObj).then(onSignin).catch(function (error) {console.log(error) });
}
// Add your BOT ID below
var theURL =
Gå till sidan Översikt i Azure-portalen och kopiera App-ID (klient) och Katalog (klientorganisation) ID från registreringen av arbetsyteappen.
Så här konfigurerar du Microsoft autentiseringsbibliotek (MSAL):
Tilldela clientId till ditt program-ID (klient-ID).
Tilldela authority till https://login.microsoftonline.com/ och lägg till katalog-ID (klientorganisation) i slutet.
Till exempel:
var clientApplication;
(function (){
var msalConfig = {
auth: {
clientId: '692e92c7-xxxx-4060-76d3-b381798f4d9c',
authority: 'https://login.microsoftonline.com/7ef988bf-xxxx-51af-01ab-2d7fd011db47'
},
Ange variabeln theURL till tokenslutpunkt UR som du kopierade tidigare. Till exempel:
(async function main() {
var theURL = "https://1c0.0.environment.api.powerplatform.com/powervirtualagents/bots/5a099fd/directline/token?api-version=2022-03-01-preview"
Redigera värdet userId för att ta med ett anpassat prefix. Till exempel:
Om din webbläsare blockerar popup-fönster eller om du använder ett inkognitoläge eller ett privat surfingfönster kommer du att bli uppmanad att logga in. Annars slutförs inloggningen med en verifieringskod.
En ny webbläsarflik öppnas.
Växla till den nya fliken och kopiera verifieringskoden.
Gå tillbaka till fliken med din copilot och klistra in valideringskoden i copilot-konversationen.
Copilot Studio skickar en inloggningsfråga så att användaren kan logga in med sina konfigurerade identitetsprovider.
Copilot anpassade arbetsyta spärrar inloggningsfrågan och begär en OBO-token från Microsoft Entra ID. Arbetsytan skickar token till copilot.
När OBO-token tas emot byter copilot ut OBO-token mot en "åtkomsttoken" och fyller i variabeln AuthToken med hjälp av värdet i åtkomsttoken. Variabeln IsLoggedIn ställs också in vid denna tidpunkt.
Skapa en programregistrering i Microsoft Entra ID för din anpassade arbetsyta
För att aktivera SSO behöver du två separata appregistreringar:
Gå till appregistreringar, antingen genom att välja ikonen eller söka i det översta sökfältet.
Välj Ny registrering.
Ange ett namn för registreringen. Det kan vara bra att använda namnet på den copilot som du registrerar arbetsytan på och ta med arbetsytan för att skilja den från appregistreringen för autentisering.
Om din copilot kallas "Contoso försäljningshjälp" kan du ge appregistreringen namnet "ContosoSalesCanvas" eller liknande.
Under Kontotyper som stöds väljKonton i valfri organisationsklientorganisation (Alla Microsoft Entra ID-kataloger – Flera klientorganisationer) och personliga Microsoft-konton (t.ex. Skype, Xbox).
Låt avsnittet omdirigerings-URI vara tomt tills du anger informationen i nästa steg. Välj Registrera.
När registreringen är klar öppnas den på sidan översikt. Gå till Manifest. Bekräfta att accessTokenAcceptedVersion är inställd på 2. Om det inte är det ändrar du det till 2 och väljer sedan Spara.
Lägg till omdirigerings-URL
När registreringen är öppen går du till Autentisering och väljer sedan Lägg till en plattform.
På bladet Konfigurera plattformar väljWeb .
Under omdirigerings-URI lägger du till den fullständiga URL-adressen till sidan där din chattarbetsyta finns. Under avsnittet Implicit tilldelning markerar du kryssrutorna ID-token och Åtkomsttoken.
Välj Konfigurera för att bekräfta ändringarna.
Gå till API-behörigheter. Välj bevilja administrativt medgivande för <klientorganisationens namn> och klicka sedan på Ja.
Viktigt!
För att undvika att användare måste meddelas till de olika programmen måste en global administratör, en appadministratör eller en molnappadministratör ge medgivande rörande hela klientorganisationen till dina appregistreringar.
Definiera ett anpassat omfång för din copilot
Definiera en anpassad omfattning genom att exponera ett API för arbetsyteappens registrering inom autentisering av appregistreringen. Med omfång kan du fastställa användar- och administratörsroller och åtkomsträttigheter.
Det här steget skapar en förtroenderelation mellan registreringen av verifieringsprogram för autentisering och appregistrering för den anpassade arbetsytan.
Gå till API-behörigheter och kontrollera att rätt behörigheter har lagts till för copilot. Välj bevilja administrativt medgivande för <klientorganisationens namn> och klicka sedan på Ja.
Viktigt!
För att undvika att användare måste meddelas till de olika programmen måste en global administratör, en appadministratör eller en molnappadministratör ge medgivande rörande hela klientorganisationen till dina appregistreringar.
Gå till Visa en API och välj Lägg till en a omfattning.
Ange ett namn för definitionsområdet tillsammans med den skärminformation som ska visas för användarna när de kommer till SSO-skärmen. Välj Lägg till definitionsområde.
Välj Lägg till ett klientprogram.
Ange program-ID (klient) från sidan översikt för registreringen av arbetsyteappen i fältet klient-ID. Markera kryssrutan för den listade omfattningen som du skapade.
Välj Lägg till program.
Konfigurera autentisering i Copilot Studio för att aktivera SSO
Exchange-URL för token på konfigurationssidan för Copilot Studio-autentisering används för att byta ut OBO-token mot begärd åtkomsttoken via robotramverket.
Copilot Studio ber Microsoft Entra ID utföra det faktiska bytet.
Logga in på Copilot Studio.
Bekräfta att du har valt den copilot för vilken du vill aktivera autentisering genom att välja copilot-ikonen i den översta menyn och välja rätt copilot.
I navigeringsmenyn, under Inställningar, väljer du Säkerhet. Välj kortet Webbautentisering.
Ange URI:n för fullständig omfattning från Exponera ett API blad för copilot autentisering appregistrering i fältet Utbytes-URL för token. URI har följande format api://1234-4567/scope.name.
Välj Spara och publicera sedan copilot-innehållet.
Konfigurera HTML-koden på din anpassade arbetsyta i syfte att aktivera SSO
Uppdatera sidan för anpassad arbetsyta där copilot finns i syfte att genskjuta begäran om inloggningskort och byta ut OBO-token.
Konfigurera Microsoft Authentication Library (MSAL) genom att lägga till följande kod i en <skript>-tagg i avsnittet <huvud>.
Uppdatera clientId med program-ID (klient) för registrering av arbetsyteapp. Ersätt <Directory ID> med katalog-ID (klientorganisation). De här ID-numren visas från sidan översikt för registrering av arbetsyteapp.
<head>
<script>
var clientApplication;
(function () {
var msalConfig = {
auth: {
clientId: '<Client ID [CanvasClientId]>',
authority: 'https://login.microsoftonline.com/<Directory ID>'
},
cache: {
cacheLocation: 'localStorage',
storeAuthStateInCookie: false
}
};
if (!clientApplication) {
clientApplication = new Msal.UserAgentApplication(msalConfig);
}
} ());
</script>
</head>
Lägg till följande <skript> i avsnittet <text>. Det här skriptet anropar en metod för att hämta resourceUrl och byta ut din aktuella token mot en token som begärs av prompten OAuth .
<script>
function getOAuthCardResourceUri(activity) {
if (activity &&
activity.attachments &&
activity.attachments[0] &&
activity.attachments[0].contentType === 'application/vnd.microsoft.card.oauth' &&
activity.attachments[0].content.tokenExchangeResource) {
// asking for token exchange with Microsoft Entra ID
return activity.attachments[0].content.tokenExchangeResource.uri;
}
}
function exchangeTokenAsync(resourceUri) {
let user = clientApplication.getAccount();
if (user) {
let requestObj = {
scopes: [resourceUri]
};
return clientApplication.acquireTokenSilent(requestObj)
.then(function (tokenResponse) {
return tokenResponse.accessToken;
})
.catch(function (error) {
console.log(error);
});
}
else {
return Promise.resolve(null);
}
}
</script>
Lägg till följande <skript> i avsnittet <text>. I metoden main lägger koden till ett villkor i store med den unika identifieraren för copilot. Den genererar även ett unikt ID som userId variabel.
Uppdatera <COPILOT ID> med copilot-ID. Du kan visa din copilot-ID genom att gå till fliken kanaler för den copilot som du använder och välja mobilappen på Copilot Studio-portalen.
<script>
(async function main() {
// Add your COPILOT ID below
var BOT_ID = "<BOT ID>";
var theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID;
const {
token
} = await fetchJSON(theURL);
var directline = await fetchJSON(regionalChannelSettingsURL).then(res=> res.channelUrlsById.directline);
const directLine = window.WebChat.createDirectLine({
domain: `${directline}v3/directline`,
token
});
var userID = clientApplication.account?.accountIdentifier != null ?
("Your-customized-prefix-max-20-characters" + clientApplication.account.accountIdentifier).substr(0, 64) :
(Math.random().toString() + Date.now().toString()).substr(0, 64); // Make sure this will not exceed 64 characters
const store = WebChat.createStore({}, ({
dispatch
}) => next => action => {
const {
type
} = action;
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'startConversation',
type: 'event',
value: {
text: "hello"
}
}
});
return next(action);
}
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
const activity = action.payload.activity;
let resourceUri;
if (activity.from && activity.from.role === 'bot' &&
(resourceUri = getOAuthCardResourceUri(activity))) {
exchangeTokenAsync(resourceUri).then(function(token) {
if (token) {
directLine.postActivity({
type: 'invoke',
name: 'signin/tokenExchange',
value: {
id: activity.attachments[0].content.tokenExchangeResource.id,
connectionName: activity.attachments[0].content.connectionName,
token,
},
"from": {
id: userID,
name: clientApplication.account.name,
role: "user"
}
}).subscribe(
id => {
if (id === 'retry') {
// copilot was not able to handle the invoke, so display the oauthCard
return next(action);
}
// else: tokenexchange successful and we do not display the oauthCard
},
error => {
// an error occurred to display the oauthCard
return next(action);
}
);
return;
} else
return next(action);
});
} else
return next(action);
} else
return next(action);
});
const styleOptions = {
// Add styleOptions to customize Web Chat canvas
hideUploadButton: true
};
window.WebChat.renderWebChat({
directLine: directLine,
store,
userID: userID,
styleOptions
},
document.getElementById('webchat')
);
})().catch(err => console.error("An error occurred: " + err));
</script>
Full exempelkod
För mer information kan du få hela exempelkoden med MSAL och villkorsskript för lagring redan inkluderade i vår GitHub-databas.