1 Ayrıca Teams kanalını etkinleştirdiyseniz, Microsoft Teams'teki aracılar için Microsoft Entra ID ile çoklu oturum açmayı yapılandırma belgesindeki yapılandırma yönergelerini izlemeniz gerekir. Teams SSO ayarlarının o sayfada açıklandığı gibi yapılandırılmaması, kullanıcılarınızın Teams kanalını kullanırken kimlik doğrulamasının her zaman başarısız olmasına neden olur.
Tuval uygulaması kaydı olarak hizmet veren ikinci bir uygulama kaydı oluşturmak için bir kimlik doğrulaması uygulaması kaydı oluşturma yönergelerini yeniden izleyin.
Kimlik doğrulama uygulaması kaydına tuval uygulaması kayıt kimliğini ekleyin.
Belirteç değişimi URL'si ekleme
Copilot Studio içindeki Microsoft Entra ID kimlik doğrulama ayarlarını güncellemek için, uygulamanızın ve Copilot Studio bilgi paylaşmasına izin verecek token değişim URL'sini eklemeniz gerekir.
Kimlik doğrulama uygulaması kayıt blade'inizdeki Azure portalında, Bir API'yi Açığa Çıkar'a gidin.
Kapsamlar altında Panoya kopyala simgesini seçin.
Copilot Studio'ta, gezinti menüsünde Ayarlar altında Güvenlik seçeneğini belirleyin ve ardından Kimlik Doğrulaması kutucuğunu seçin.
Belirteç değişimi URL'si (SSO için gereklidir) için daha önce kopyaladığınız kapsamı yapıştırın.
Kaydet'i seçin.
Tuval uygulama kaydınızı yapılandırma
Tuval uygulaması kaydınızı oluşturduktan sonra Kimlik doğrulaması'na gidin ve Platform ekle'yi seçin.
Platform yapılandırmaları altında Platform ekle'yi ve ardından Web'i seçin.
Yeniden yönlendirme URI'leri altından web sayfanızın URL'sini girin, örneğin http://contoso.com/index.html.
Örtük onay ve karma akışlar bölümünde Erişim belirteçleri (örtük akışlar için kullanılır) ve Kimlik belirteçleri (örtük ve karma akışlar için kullanılır) ayarlarını açın.
Yapılandır'ı seçin.
Aracınızın belirteç uç noktası URL'sini bulun
Copilot Studio içinde, aracınızı açın ve sonra Kanallar'ı seçin.
Mobil uygulama'yı seçin.
Belirteç Uç Noktası'nın altında Kopyala'yı seçin.
Web sayfanızda SSO yapılandırma
Yeniden yönlendirme URL'si için bir web sayfası oluşturmak amacıyla Copilot Studio GitHub deposunda sağlanan kodu kullanın. Kodu GitHub deposundan kopyalayın ve aşağıdaki yönergeleri kullanarak değiştirin.
Not
GitHub deposundaki kod, kullanıcının farklı bir siteden oturum açma düğmesi ya da oturum açmasını gerektirir. Otomatik girişi etkinleştirmek için aşağıdaki kodu aysnc function main() başına ekleyin:
(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 =
Azure portalda Genel bakış sayfasına gidin ve Uygulama (istemci) kimliğini ve Dizin (kiracı) kimliğinizi, tuval uygulama kaydınızdan kopyalayın.
Microsoft Kimlik Doğrulama Kitaplığını (MSAL) yapılandırmak için:
Uygulama (istemci) kimliğinizeclientId atayın.
https://login.microsoftonline.com/ öğesine authority atayın ve sonuna Dizin (kiracı) kimliğinizi ekleyin.
Örneğin:
var clientApplication;
(function (){
var msalConfig = {
auth: {
clientId: '00001111-aaaa-2222-bbbb-3333cccc4444',
authority: 'https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
},
theURL değişkenini daha önce kopyaladığınız belirteç uç nokta URL'sine ayarlayın. Örneğin:
(async function main() {
var theURL = "https://<token endpoint URL>"
userId değerini özelleştirilmiş bir önek içerecek şekilde düzenleyin. Örneğin:
Aracınızı test ederken, SSO başarıyla yapılandırılmadıysa oturum açmanız istenir ve bu da size sohbet penceresine kopyalamanız gereken bir doğrulama kodu verir.
Bir oturum açma istemi görürseniz, bu yordamın 1 ile 5 arasındaki adımlarını doğru şekilde tamamladığınızdan emin olun. SSO başarıyla yapılandırılırsa, oturum açmanız istenmez.
Copilot Studio, bir oturum açma istemi göndererek kullanıcının yapılandırılmış kimlik sağlayıcısıyla oturum açmasına izin verir.
Aracının özel tuvali oturum açma istemini karşılar ve Microsoft Entra ID'den bir adına (OBO) belirteci ister. Tuval, belirteci aracıya gönderir.
OBO belirteci alındığında, aracı bir "erişim belirteci" için obo belirtecini alışverişlerde, erişim belirteci değerini kullanarak AuthToken değişkeni doldurur.
IsLoggedIn değişkeni de aynı anda ayarlanır.
Özel tuvaliniz için Microsoft Entra ID'de uygulama kaydı oluşturma
SSO'yu etkinleştirmek için iki ayrı uygulama kaydı gerekir:
Simgeyi seçerek veya üst arama çubuğunda arama yaparak Uygulama kayıtlarına gidin.
Yeni kayıt seçeneğini belirleyin.
Kayıt için bir ad girin. Tuvalini kaydettiğiniz aracınızın adını kullanmak ve kimlik doğrulaması sırasında uygulama kaydından ayırmaya yardımcı olmak için "tuval" sözcüğünü eklemek yararlı olabilir.
Örneğin, aracınıza "Contoso satış yardımı" adı verilmişse uygulama kaydını "ContosoSatışTuval" veya benzeri bir adla adlandırabilirsiniz.
Desteklenen hesap türleri altında Herhangi bir kuruluş kiracısındaki hesaplar (Herhangi bir Microsoft Entra ID dizini, Çok müşterili) ve kişisel Microsoft hesapları (ör. Skype, Xbox) seçeneğini belirleyin.
Sonraki adımlarda ilgili bilgileri girdiğinizden, Yönlendirme URI'sı bölümünü şimdilik boş bırakın.
Kaydet'i seçin.
Kayıt tamamlandıktan sonra, Genel Bakış sayfasına açılır.
Bildirim bölümüne gidin.
accessTokenAcceptedVersion değerinin 2 olarak ayarlandığını onaylayın. Böyle değilse 2 olarak değiştirin ve ardından Kaydet'i seçin.
Yeniden yönlendirme URL'si ekleme
Kayıt açıkken Kimlik doğrulaması'na gidin ve Platform ekle'yi seçin.
URL'leri yeniden yönlendir altında, sohbet tuvalinizin barındığı sayfaya tam URL'yi ekleyin.
Örtük onay bölümü altında Kimlik Belirteçleri ve Erişim Belirteçleri onay kutularını işaretleyin.
Değişikliklerinizi onaylamak için Yapılandır'ı seçin.
API İzinleri'ne gidin.
<Kiracı adınız> için yönetici izni verin'i ve ardından Evet'i seçin.
Önemli
Kullanıcıların her uygulama için onay verme zorunluluğunu önlemek amacıyla, en azından Uygulama Yöneticisi veya Bulut Uygulama Yöneticisi rolüne atanmış biri, uygulama kayıtlarınıza kiracı genelinde onay verebilir.
Aracınız için özel bir kapsam tanımlama
Kimlik doğrulama uygulaması kaydı içinde tuval uygulaması kaydı için bir API ortaya çıkartarak özel bir kapsam tanımlayın.
Kapsamlar, kullanıcı ve yönetici rollerini ve erişim haklarını belirlemenizi sağlar.
Bu adım, kimlik doğrulaması için kimlik doğrulama uygulaması kaydı ile özel tuvaliniz için uygulama kaydı varlıkları arasında bir güven ilişkisi oluşturur.
API İzinleri'ne gidin ve aracınız için doğru izinlerin eklendiğinden emin olun.
<Kiracı adınız> için yönetici izni verin'i ve ardından Evet'i seçin.
Önemli
Kullanıcıların her uygulama için onay verme zorunluluğunu önlemek amacıyla, en azından Uygulama Yöneticisi veya Bulut Uygulama Yöneticisi rolüne atanmış biri, uygulama kayıtlarınıza kiracı genelinde onay verebilir.
Bir API’yi kullanıma sunma'ya gidin ve Kapsam ekle'yi seçin.
Kapsamın adını ve SSO ekranına geldiklerinde kullanıcılara gösterilecek görünen bilgileri girin.
Kapsam ekle'yi seçin.
İstemci uygulaması ekle'yi seçin.
Tuval uygulaması kaydı için Genel Bakış sayfasındaki Uygulama (istemci) Kimliği'ni İstemci Kimliği alanına girin. Oluşturduğunuz kapsam için onay kutusunu seçin.
Uygulama ekle'yi seçin.
SSO'yu etkinleştirmek için Copilot Studio'ta kimlik doğrulamasını yapılandırma
Copilot Studio kimlik doğrulaması yapılandırması sayfasındaki Belirteç Değişim URL'si, OBO belirtecinin, bot çerçevesi üzerinden istenen erişim belirteciyle değiştirilmesi için kullanılır.
Copilot Studio, gerçek değişimi gerçekleştirmek için Microsoft Entra ID'yi çağırır.
Copilot Studio'a oturum açın.
Üst menüdeki aracı simgesini seçip doğru aracı seçerek kimlik doğrulamasını etkinleştirmek istediğiniz aracı seçtiğinizi onaylayın.
Gezinti menüsünde, Ayarlar altında Güvenlik'i seçin. Ardından Kimlik Doğrulaması kartını seçin.
Belirteç değişim URL'si alanında aracınızın kimlik doğrulama uygulama kaydı için Bir API'yi kullanıma sunma dikey penceresindeki tam kapsamlı URI'yi girin. URI, api://1234-4567/scope.name biçimindedir.
Kaydet'i seçin ve ardından aracı içeriğini yayımlayın.
SSO'yu etkinleştirmek için özel tuval HTML kodunuzu yapılandırma
Oturum açma kartı isteğine engel olmak ve OBO belirtecini değiştirmek için aracının bulunduğu özel tuval sayfasını güncelleştirin.
<Ana> bölümünüzdeki bir <komut dosyası> etiketine aşağıdaki kodu ekleyerek Microsoft Kimlik Doğrulaması Kitaplığı'nı (MSAL) yapılandırın.
Tuval uygulama kaydı için clientId uygulamasını Uygulama (istemci) Kimliği ile güncelleştirin.
<Directory ID> uygulamasını Dizin (kiracı) kimliği ile değiştirin. Bu kimlikleri, tuval uygulaması kaydı için Genel Bakış sayfasından alırsınız.
<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>
<Gövde> bölümüne aşağıdaki <komut dosyası>'nı ekleyin. Bu komut dosyası, bir yöntem çağırarak resourceUrl uygulamasını alır ve geçerli belirtecinizi OAuth istemi tarafından istenen bir belirteçle değiştirir.
<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>
<Gövde> bölümüne aşağıdaki <komut dosyası>'nı ekleyin.
main yöntemin içinde bu kod, aracının benzersiz tanımlayıcısına sahip olan store uygulamanıza bir koşullu ekler. Bu ayrıca userId değişkeniniz olarak benzersiz bir kimlik oluşturur.
<COPILOT ID> uygulamasını aracınızın kimliğiyle güncelleyin. Kullandığınız aracı için Kanallar sekmesi'ne gidip Copilot Studio portalında Mobil uygulama'yı seçerek aracınızın kimliğini görebilirsiniz.
<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>
Tam örnek kod
Daha fazla bilgi için, MSAL ile birlikte tüm örnek kodu bulabilir ve önceden GitHub repo'muzda bulunan koşullu komut dosyalarını depolayabilirsiniz.