Kertakirjautumisen määrittäminen Microsoft Entra ID:n avulla
Artikkeli
Copilot Studio tukee kertakirjautumista (SSO). SSO:n avulla sivustosi asiakaspalvelijat voivat kirjata asiakkaita sisään, jos he ovat jo kirjautuneet sivulle tai sovellukseen, jossa asiakaspalvelija on otettu käyttöön.
Esimerkiksi asiakaspalvelija isännöidään yrityksen intranetissä tai sovelluksessa, johon käyttäjä on jo kirjautunut.
Kertakirjautumisen Copilot Studioissa määrittämisellä on neljä päävaihetta:
Mukautetun kaavion sovelluksen rekisteröinnin luominen Microsoft Entra ID:ssä.
Seuraavassa taulukossa on esitetty kanavat, jotka tukevat tällä hetkellä SSO:ta. Voit ehdottaa tukea ylimääräisille kanaville Ideat foorumilla Copilot Studio .
1 Jos käytössä on myös Teams-kanava, sinun on noudatettava dokumentaatiossa olevan Microsoft Entra Määritä kertakirjautuminen tunnuksella Microsoft Teams agenteille -määritysohjeita. Jos Teamsin kertakirjautumisasetuksia ei määritetä kyseisen sivun ohjeiden mukaisesti, käyttäjiesi todennus epäonnistuu aina käytettäessä Teams-kanavaa.
Luo pohjaan perustuvan sovelluksen rekisteröintiä vastaava toisen sovelluksen rekisteröinti seuraamalla uudelleen todennussovelluksen rekisteröinnin ohjeita.
Lisää pohjaan perustuvan sovelluksen rekisteröintitunnus todennussovelluksen rekisteröintiä varten.
Tunnuksenvaihdon URL-osoitteen lisääminen
Jos haluat päivittää Microsoft Entra ID:n todennusasetukset Copilot Studiossa, lisää tunnuksen vaihdon URL-osoite. Tällöin sovellus ja Copilot Studio voivat jakaa tietoja.
Valitse Copilot Studioin siirtymisvalikossa Asetukset, Suojaus ja sitten Todennus-ruutu.
Liitä Tunnuksen vaihdon URL-osoite (vaaditaan kertakirjautumisessa) -kenttään aiemmin kopioimasi vaikutusalue.
Valitse Tallenna.
Pohjaan perustuvan sovelluksen rekisteröinnin määrittäminen
Kun olet luonut pohjaan perustuvan sovelluksen rekisteröinnin, siirry kohtaan Todennus ja valitse sitten Lisää ympäristö.
Valitse Ympäristömääritykset-kohdassa Lisää ympäristö ja valitse sitten Verkko.
Syötä Uudelleenohjauksen URI-osoitteet -kohdassa verkkosivuston URL-osoite, esimerkiksi http://contoso.com/index.html.
Ota Implisiittinen myöntäminen ja hybridityönkulku -osassa käyttöön Käyttöoikeustietueet (käytetään implisiittisiin työnkulkuihin) sekä ID-tunnukset (käytetään implisiittisiin ja hybridityönkulkuihin).
Avaa Copilot Studio asiakaspalvelija ja valitse sitten Kanavat.
Valitse Mobiilisovellus.
Valitse Tunnuksen päätepiste -kohdasta Kopioi.
SSO-kirjautumisen määrittäminen verkkosivustolle
Luo verkkosivusto uudelleenohjauksen URL-osoitteelle käyttämällä Copilot Studioin GitHub-säilössä annettua koodia. Kopioi koodi GitHub-säilöstä ja muokkaa sitä seuraavien ohjeiden mukaisesti.
Muistiinpano
GitHub-säilön koodi edellyttää, että käyttäjä valitsee sisäänkirjautumispainikkeen tai kirjautuu sisään eri sivuston avulla. Jos haluat ottaa käyttöön automaattisen sisäänkirjauksen, lisää funktion aysnc function main() alkuun seuraava koodi:
(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 =
Siirry Yleiskatsaus-sivulle Azure-portaalissa ja kopioi sovelluksen (asiakkaan) tunnus ja hakemiston (vuokraajan) tunnus pohjaan perustuvan sovelluksen rekisteröinnistä.
Jos selain estää ponnahdusikkunat tai käytät incognito- tai yksityistä selainikkunaa, sinua pyydetään kirjautumaan sisään. Muuten kirjautuminen valmistuu vahvistuskoodin käyttämisellä.
Uusi selainvälilehti avautuu.
Siirry uuteen välilehteen ja kopioi vahvistuskoodi.
Siirry takaisin välilehdelle, jossa on asiakaspalvelija, ja liitä vahvistuskoodi asiakaspalvelija-keskusteluun.
Copilot Studio lähettää kirjautumiskehotteen, jotta käyttäjä voi kirjautua sisään määritetyllä tunnistetietopalvelullaan.
asiakaspalvelija:n mukautettu piirtoalue sieppaa kirjautumiskehotteen ja pyytää ID:ltä Microsoft Entra OBO (on-behalf) -tunnusta. Piirtoalue lähettää tunnuksen asiakaspalvelija.
Vastaanotettuaan OBO-tunnuksen asiakaspalvelija vaihtaa OBO-tunnuksen "käyttöoikeustietue" -tunnukseen ja täyttää muuttujan AuthToken käyttämällä käyttöoikeustietue arvoa. Myös muuttuja IsLoggedIn määritetään tässä yhteydessä.
Mukautetun kaavion sovelluksen rekisteröinnin luominen Microsoft Entra ID:ssä
Jos haluat ottaa SSO-kirjautumisen käyttöön, tarvitset kaksi erillistä sovelluksen rekisteröintiä:
Anna rekisteröinnille nimi. Voi olla hyödyllistä käyttää sen asiakaspalvelija nimeä, jonka kangasta olet rekisteröimässä, ja sisällyttää "canvas", jotta se voidaan erottaa sovelluksen rekisteröinnistä todennusta varten.
Jos esimerkiksi asiakaspalvelija on nimeltään Contoso Sales Help, voit antaa sovelluksen rekisteröinnille nimen ContosoSalesCanvas tai jotain vastaavaa.
Valitse kohdassa Tuetut tilityypitTilit missä tahansa organisaation vuokraajassa (Mikä tahansa Microsoft Entra ID -hakemisto – palveluna tarjottava sovellus) ja henkilökohtaiset Microsoft-tilit (kuten Skype, Xbox).
Jätä Uudelleenohjauksen URI -osa vielä tyhjäksi, koska syötät kyseiset tiedot seuraavissa vaiheissa. Valitse Rekisteröi.
Kun rekisteröinti on valmis, Yleiskatsaus-sivu avautuu. Siirry kohtaan Luettelo. Vahvista, että accessTokenAcceptedVersion-arvo on 2. Jos näin ei ole, muuta sen arvoksi 2 ja valitse sitten Tallenna.
Uudelleenohjauksen URL-osoitteen lisääminen
Kun rekisteröinti on auki, siirry kohtaan Todennus ja valitse sitten Lisää ympäristö.
Valitse Määritä ympäristöjä -ikkunassa Verkko.
Lisää kohtaan Uudelleenohjauksen URI-osoitteet täysi URL-osoite sille sivulle, jolla keskustelupohjaasi isännöidään. Valitse Implisiittinen myöntäminen -osassa valintaruudut ID-tunnukset ja Käyttöoikeustunnukset.
Vahvista muutoksesi valitsemalla Määritä.
Siirry Ohjelmointirajapintaoikeuksiin. Valitse Myönnä järjestelmänvalvojan suostumus vuokraajalle <your tenant name> ja sitten Kyllä.
Tärkeä
Jotta käyttäjien ei tarvitsisi suostua jokaiseen sovellukseen, yleisen järjestelmänvalvojan, sovelluksen järjestelmänvalvojan tai pilvisovelluksen järjestelmänvalvojan on myönnettävä vuokraajanlaajuinen suostumus sovellusrekisteröinneillesi.
Määritä mukautettu vaikutusalue asiakaspalvelija
Määritä mukautettu vaikutusalue tarjoamalla ohjelmointirajapinta pohjaan perustuvan sovelluksen rekisteröinnille todennussovelluksen rekisteröinnin sisällä. Vaikutusalueiden avulla voit määrittää käyttäjä- ja järjestelmänvalvojan rooleja sekä käyttöoikeuksia.
Tämä vaihe luo luottamussuhteen todennusta varten luotavan todennussovelluksen rekisteröinnin ja mukautetun pohjasi sovellusrekisteröinnin välille.
Siirry API-käyttöoikeuksiin ja varmista, että asiakaspalvelija:lle on lisätty oikeat käyttöoikeudet. Valitse Myönnä järjestelmänvalvojan suostumus vuokraajalle <your tenant name> ja sitten Kyllä.
Tärkeä
Jotta käyttäjien ei tarvitsisi suostua jokaiseen sovellukseen, yleisen järjestelmänvalvojan, sovelluksen järjestelmänvalvojan tai pilvisovelluksen järjestelmänvalvojan on myönnettävä vuokraajanlaajuinen suostumus sovellusrekisteröinneillesi.
Siirry kohtaan Tarjoa ohjelmointirajapintaa ja valitse Lisää vaikutusalue.
Syötä nimi vaikutusalueelle sekä näyttötiedot, jotka näytetään käyttäjille, kun he saapuvat kertakirjautumisnäyttöön. Valitse Lisää vaikutusalue.
Valitse Lisää asiakassovellus.
Syötä Yleiskatsaus-sivun Sovelluksen (asiakas) tunnus pohjaan perustuvan sovelluksen rekisteröintiä varten Asiakastunnus-kenttään. Valitse luomasi luetellun vaikutusalueen valintaruutu.
Copilot Studioin todennuksenmäärityssivun Tunnuksenvaihdon URL -osoitetta käytetään OBO-tunnuksen vaihtamisessa pyydettyyn käyttöoikeustunnukseen Bot Frameworkin kautta.
Copilot Studio kutsuu Microsoft Entra ID:n suorittamaan varsinaisen vaihdon.
Kirjaudu Copilot Studio.
Varmista, että olet valinnut asiakaspalvelija, jolle haluat ottaa todennuksen käyttöön, valitsemalla ylävalikosta asiakaspalvelija -kuvakkeen ja valitsemalla oikea asiakaspalvelija.
Valitse siirtymisvalikon Asetukset-kohdasta Suojaus. Valitse sitten Todentaminen-kortti.
Kirjoita asiakaspalvelija:n todennussovelluksen rekisteröinnin Expose an API -terän koko laajuuden URI Token Exchange URL - kenttään . Kanavan URI-osoitteen muoto on api://1234-4567/scope.name.
Valitse Tallenna ja julkaise asiakaspalvelija-sisältö.
Päivitä mukautettu canvas-sivu, jossa asiakaspalvelija sijaitsee, jotta voit siepata kirjautumis- kortti pyynnön ja vaihtaa OBO-tunnuksen.
Määritä Microsoft Authentication Library (MSAL) lisäämällä seuraava koodi <script>-välilehteen <head>-osassa.
Päivitä clientIdSovelluksen (asiakas) tunnus -arvolla pohjaan perustuvan sovelluksen rekisteröintiä varten. Korvaa <Directory ID> arvolla Hakemiston (vuokraaja) tunnus. Saat nämä tunnukset pohjaan perustuvan sovelluksen rekisteröinnin Yleiskatsaus-sivulta.
<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>
Lisää seuraava <skripti> <body>-osaan. Tämä skripti kutsuu menetelmää resourceUrl-osoitteen noutamiseen ja nykyisen tunnuksesi vaihtamiseen OAuth-kehotteen pyytämään tunnukseen.
<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>
Lisää seuraava <skripti> <body>-osaan. Menetelmässä main tämä koodi lisää ehdollisen # storeasiakaspalvelija: n yksilöllisellä tunnisteella. Se luo myös yksilöllisen tunnuksen userId-muuttujaksesi.
Päivitä <COPILOT ID> asiakaspalvelija-tunnuksellasi. Näet asiakaspalvelija-tunnuksesi siirtymällä käyttämäsi asiakaspalvelija Kanavat-välilehteen ja valitsemalla portaalista Mobiilisovellus Copilot Studio .
<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>
Täysi näytekoodi
Lisätietoja varten voit löytää täyden näytekoodin, joka sisältää jo MSAL:n ja kaupan ehdolliset skriptit GitHub-säilöstämme.