Copilot Studio understøtter enkeltlogon (SSO). SSO giver copiloter på dit websted tilladelse til at logge kunder på, hvis de allerede er logget på siden eller appen, hvor copiloten er installeret.
Eksempelvis hvis copilot hostes på firmaets intranet eller i en app, som brugeren allerede er logget på.
Der findes fire hovedtrin i forbindelse med konfiguration af SSO til Copilot Studio:
Opret en appregistrering i Microsoft Entra ID til dit brugerdefinerede lærred.
Definer et brugerdefineret omfang for din copilot.
Konfigurer godkendelse i Copilot Studio for at aktivere SSO.
Konfigurer din brugerdefinerede HTML-lærredkode til at aktivere SSO.
1 Hvis du også har aktiveret Teams-kanalen, skal du følge konfigurationsinstruktionerne i Konfigurer enkeltlogon med Microsoft Entra id for copiloter i Microsoft Teams dokumentationen. Hvis indstillingerne for Teams SSO ikke konfigureres som anvist på den pågældende side, medfører det, at brugerne aldrig kan godkende, når de bruger Teams-kanalen.
Følg vejledningen for at oprette en godkendelsesappregistrering igen for at oprette en anden appregistrering, der fungerer som din lærredappregistrering.
Tilføj registrerings-id for lærredsappen i registrering af godkendelses-app.
Tilføj URL-adressen til tokenudveksling
Hvis du vil opdatere Microsoft Entra indstillingerne for id-godkendelse i Copilot Studio, skal du tilføje webadressen til tokenudveksling for at tillade, at din app og Copilot Studio deler oplysninger.
Gå til Vis en API i Azure-portalen til registrering af godkendelsesappen.
Under Områder skal du vælge ikonet Kopiér til Udklipsholder .
Vælg Sikkerhed i Copilot Studio-navigationsmenuen under Indstillinger, og vælg derefter feltet Godkendelse.
Indsæt det omfang, du kopierede tidligere, i URL-adresse til tokenudveksling (kræves til SSO).
Vælg Gem.
Konfigurer registrering af lærredapp
Når du opretter registreringen af din lærredapp, skal du gå til Godkendelse og derefter vælge Tilføj en platform.
Vælg Tilføj en platform under Platformskonfigurationer, og vælg derefter Web.
Angiv URL-adressen til din webside under Omdirigering af URL-adresser, f.eks. http://contoso.com/index.html.
I sektionen Implicit tilladelse og hybridflow skal du slå både Adgangstokener (bruges til implicitte flows) og Id-tokener (bruges til implicitte og implicitte flow).
Vælg Konfigurer.
Find slutpunkts-URL-adressen til din copilots token
Åbn din copilot i Copilot Studio, og vælg derefter Kanaler.
Vælg Mobilapp.
Vælg Kopiér ud for Slutpunkt for token.
Konfigurere SSO på websiden
Brug koden i Copilot Studio GitHub-lager til at oprette en webside til URL-adressen til omdirigering. Kopiér koden fra GitHub-lageret, og rediger den ved hjælp af følgende instruktioner.
Bemærk
Koden i GitHub-repo'en kræver, at brugeren vælger en logonknap eller logger på fra et andet websted. Hvis du vil aktivere automatisk login, skal du tilføje følgende kode i begyndelsen af 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å tilbage til afsnittet Oversigt i din Azure-portal, og kopiér Program-id (klient-id) og Mappe-id (lejer-id) fra registreringen i lærredapp.
Sådan konfigurerer du MSAL (godkendelsesbiblioteket til Microsoft):
Tildel clientId til Program-id (klient).
Tildel authority til https://login.microsoftonline.com/, og tilføj Mappe-id (lejer) i slutningen.
Eksempel:
var clientApplication;
(function (){
var msalConfig = {
auth: {
clientId: '692e92c7-xxxx-4060-76d3-b381798f4d9c',
authority: 'https://login.microsoftonline.com/7ef988bf-xxxx-51af-01ab-2d7fd011db47'
},
Angiv variablen theURL til den tokenadresse slutpunkt du har kopieret tidligere. Eksempel:
(async function main() {
var theURL = "https://1c0.0.environment.api.powerplatform.com/powervirtualagents/bots/5a099fd/directline/token?api-version=2022-03-01-preview"
Rediger værdien for userId til at medtage et brugerdefineret præfiks. Eksempel:
Hvis din browser blokerer pop op-vinduer, eller hvis du bruger et inkognito- eller et privat browservindue, bliver du bedt om at logge på. Ellers fuldføres logon ved hjælp af en valideringskode.
En ny fane i browseren åbnes.
Skift til den nye fane, og kopiér valideringskoden.
Gå tilbage til fanen med din copilot, og indsæt valideringskoden i samtalen med copiloten.
Copilot Studio sender en logonprompt for at give brugeren mulighed for at logge på med den konfigurerede identitetsudbyder.
Copilotens brugerdefinerede lærred opfanger logonanmodningen og anmoder om et på-vegne-af-token (OBO) fra Microsoft Entra ID. Lærredet sender tokenet til copiloten.
Ved modtagelse af OBO-tokenet bytter copiloten OBO-tokenet til et "adgangstoken" og udfylder AuthToken-variablen ved hjælp af adgangstokenets værdi. IsLoggedIn-variablen angives også på nuværende tidspunkt.
Opret en appregistrering i Microsoft Entra ID til dit brugerdefinerede lærred
Hvis du vil aktivere SSO, skal du bruge to separate appregistreringer:
Gå til App-registreringer, enten ved at vælge ikonet eller søge i den øverste søgelinje.
Vælg Ny registrering.
Angiv et navn for registreringen. Det kan være en hjælp at bruge navnet på den copilot, hvis lærred du registrerer, og inkludere "lærred" for at hjælpe med at skelne det fra app-registreringen til godkendelse.
Hvis din copilot f.eks. hedder "Contoso Sales hjælp", kan du navngive app-registreringen som "ContosoSalesCanvas" eller lignende.
Under Understøttede kontotyper skal du vælge Konti i en hvilken som helst organisationslejer (Enhver Microsoft Entra id-mappe – Multitenant) og personlige Microsoft-konti (f.eks. Skype) Xbox.
Lad sektionen URL-adresse til omdirigering være tom indtil videre, da du kan angive de pågældende oplysninger i de næste trin. Vælg Registrer.
Når registreringen er fuldført, åbnes den på siden Oversigt. Gå til Manifest. Kontrollér, at accessTokenAcceptedVersion er angivet til 2. Hvis den ikke er det, skal du ændre den til 2 og derefter vælge Gem.
Tilføj URL-adressen til omdirigering
Når registreringen er åben, skal du gå til Godkendelse og derefter vælge Tilføj en platform.
På bladet Konfigurer platforme skal du vælge Web.
Under URL-adresser til omdirigering skal du tilføje den fulde URL-adresse til den side, som chatlærredet hostes på. Under sektionen Implicit tilladelse skal du markere afkrydsningsfelterne Id-tokener og Adgangstokener.
Vælg Konfigurer for at bekræfte dine ændringer.
Gå til API-tilladelser. Vælg Tildel administratorsamtykke til <dit lejer navn>, og klik derefter på Ja.
Vigtigt
Hvis du vil undgå, at brugere skal samtykke til de enkelte applikationer, skal en global administrator, en programadministrator eller en administrator for et cloud-program give samtykke til dine app-registreringer.
Definer et brugerdefineret omfang for din copilot
Du kan definere et brugerdefineret område ved at udsætte et API for registreringen af lærredsappen i registreringen af godkendelsesappen. Områder giver dig mulighed for at bestemme bruger- og administratorroller og adgangsrettigheder.
Dette trin opretter et tillidsforhold mellem app-registreringen for godkendelse og app-registreringen for det brugerdefinerede lærred.
Gå til API-tilladelser, og kontrollér, at de rette tilladelser er tilføjet for din copilot. Vælg Tildel administratorsamtykke til <dit lejer navn>, og klik derefter på Ja.
Vigtigt
Hvis du vil undgå, at brugere skal samtykke til de enkelte applikationer, skal en global administrator, en programadministrator eller en administrator for et cloud-program give samtykke til dine app-registreringer.
Gå til Vis et API, og vælg Tilføj et område.
Angiv et navn til omfanget sammen med de viste oplysninger, der skal vises til brugerne, når de kommer til skærmbilledet med SSO. Vælg Tilføj område.
Vælg Tilføj et klientprogram.
Angiv Applikations-id (klient) fra siden Oversigt for registrering af lærredappen i feltet Klient-id. Markér afkrydsningsfeltet for det område, du har oprettet.
Vælg Tilføj program.
Konfigurer godkendelse i Copilot Studio for at aktivere SSO
URL-adressen til udveksling af token på siden for konfiguration af Copilot Studio-godkendelse bruges til at udskifte OBO-tokenet med det ønskede adgangstoken via bot-strukturen.
Copilot Studio kalder Microsoft Entra ID for at udføre den faktiske udveksling.
Log på Copilot Studio.
Bekræft, at du har valgt den copilot, du vil aktivere godkendelsen for, ved at vælge copilotikonet i den øverste menu og vælge den rigtige copilot.
Vælg Sikkerhed under Indstillinger i navigationsmenuen. Vælg derefter kortet Godkendelse.
Angiv det fulde omfang af URI'en fra bladet Vis en API for copilotgodkendelsesappens registrering i feltet URL-adresse til tokenudveksling. URI'en er i formatet api://1234-4567/scope.name.
Vælg Gem, og publicer derefter copilotens indhold.
Konfigurer den brugerdefinerede HTML-lærredkode til at aktivere SSO
Opdater den brugerdefinerede lærredside, hvor copiloten er placeret, for at opsnappe anmodningen om logon-kort og udveksle OBO-tokenet.
Konfigurer Microsoft godkendelsesbiblioteket (MSAL) ved at føje følgende kode til en <script>-kode i din <hoved>-sektion.
Opdater clientId med Applikations-id'et for appen til registrering af lærredappen. Erstat <Directory ID> med Mappe-id'et (lejer). Du får disse id'er fra siden Oversigt for registreringen af lærredappen.
<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>
Indsæt følgende <script> i sektionen <brødtekst>. Dette script kalder en metode til at hente resourceUrl og udveksle dit aktuelle token med et token, der anmodes om af 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>
Indsæt følgende <script> i sektionen <brødtekst>. I main-metoden føjer denne kode en betingelse til din store sammen med din copilots entydige id. Den genererer også et entydigt id som din userId-variabel.
Opdater <COPILOT ID> med dit copilot-id. Du kan se dit copilot-id ved at gå til fanen Kanaler for den copilot, du bruger, og vælge Mobilapp 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>
Komplet eksempelkode
Du kan finde flere oplysninger ved at se hele eksempelkoden med MSAL- og lagerbetingede scripter, der allerede findes, i vores GitHub-lager.