Konfigurera enkel inloggning med Microsoft Entra ID
Artikel
Copilot Studio ger stöd för enkel inloggning aktiverad (SSO). Med enkel inloggning kan agent på din webbplats logga in kunder om de redan är inloggade på sidan eller appen där agent distribueras.
Exempelvis kanske agenten 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 en anpassad omfattning för agenten.
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 Teams-kanalen är aktiverad måste du följa konfigurationsanvisningarna i dokumentationen för Konfigurera enkel inloggning med Microsoft Entra ID för agenter i Microsoft Teams. 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 anvisningarna för att skapa registrering av autentiseringsappen igen för att skapa en andra appregistrering som fungerar som registrering av arbetsyteappen.
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 Omfattningar väljer 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 URL:en för din agentens tokenslutpunkt
I Copilot Studio öppnar du din agent 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: '00001111-aaaa-2222-bbbb-3333cccc4444',
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://<token endpoint URL>"
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.
Växla tillbaka till fliken med din agent och klistra in valideringskoden i konversationen med agenten.
Copilot Studio skickar en inloggningsfråga så att användaren kan logga in med sina konfigurerade identitetsprovider.
Agentens anpassade arbetsyta spärrar inloggningsfrågan och begär en OBO-token från Microsoft Entra ID. Arbetsytan skickar token till agenten.
När OBO-token tas emot byter agenten 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 agent som du registrerar arbetsytan på och ta med arbetsytan för att skilja den från appregistreringen för autentisering.
Om din agent kallas "Contoso försäljningshjälp" kan du ge appregistreringen namnet "ContosoSalesCanvas" eller liknande.
Under Kontotyper som stöds, välj Konton i alla organisationsklientorganisationer (Alla Microsoft Entra ID-kataloger – med flera organisationer i samma installation) 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å arket Konfigurera plattformar väljer du Webb.
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 ge medgivande till varje program kan någon som tilldelats åtminstone programadministratör eller en molnprogramadministratör kan ge medgivande rörande hela klientorganisationen till dina programregistreringar.
Definiera en anpassad omfattning för agenten
Definiera en anpassad omfattning genom att exponera ett API för arbetsyteappens registrering inom autentisering av appregistreringen. Omfattningar låter dig ange användar- och administratörsroller och åtkomstbehörigheter.
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 din agent. Välj bevilja administrativt medgivande för <klientorganisationens namn> och klicka sedan på Ja.
Viktigt
För att undvika att användare måste ge medgivande till varje program kan någon som tilldelats åtminstone programadministratör eller en molnprogramadministratör kan ge medgivande rörande hela klientorganisationen till dina programregistreringar.
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 agent för vilken du vill aktivera autentisering genom att välja agentikonen i den översta menyn och välja rätt agent.
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 agentens 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 agentinnehållet.
Konfigurera HTML-koden på din anpassade arbetsyta i syfte att aktivera SSO
Uppdatera sidan för anpassad arbetsyta där agenten 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 utväxla din aktuella token mot en token som begärs av OAuth-prompten.
<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 agentens unika identifierare. Den genererar även ett unikt ID som userId variabel.
Uppdatera <COPILOT ID> med agent-ID. Du kan visa din agents ID genom att gå till fliken kanaler för den agent som du använder och välja mobilappen på Copilot Studio-portalen.
<script>
(async function main() {
// Add your AGENT 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') {
// The agent 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.