Microsoft Entra आईडी के साथ एकल साइन-ऑन कॉन्फ़िगर करें
आलेख
महत्त्वपूर्ण
Power Virtual Agents जनरेटिव एआई और उन्नत एकीकरण में महत्वपूर्ण निवेश के बाद, क्षमताएं और विशेषताएं अब इसका हिस्सा हैं। Microsoft Copilot Studio Microsoft Copilot
कुछ लेख और स्क्रीनशॉट इस बात का संदर्भ दे सकते हैं कि Power Virtual Agents जब हम दस्तावेज़ और प्रशिक्षण सामग्री को अपडेट करते हैं।
Copilot Studio एकल साइन-ऑन (SSO) का समर्थन करता है. SSO आपकी वेबसाइट पर सह-पायलटों को ग्राहकों को साइन इन करने की अनुमति देता है, यदि वे पहले से ही उस पृष्ठ या ऐप पर लॉग इन हैं जहां को-पायलट तैनात है।
1 यदि आपके पास टीम्स चैनल भी सक्षम है, तो आपको टीम्स चैनल के लिए SSO कॉन्फ़िगर करें दस्तावेज़ पर कॉन्फ़िगरेशन निर्देशों का पालन करना होगा. उस पृष्ठ पर दिए गए निर्देशों के अनुसार Teams SSO सेटिंग्स को कॉन्फ़िगर करने में विफल रहने पर, आपके उपयोगकर्ता Teams चैनल का उपयोग करते समय हमेशा प्रमाणीकरण में विफल हो जाते हैं।
दूसरा ऐप पंजीकरण बनाने के लिए फिर से उन्हीं निर्देशों का पालन करें, जो आपके कैनवास ऐप पंजीकरण के रूप में कार्य करता है.
अपना कैनवास ऐप पंजीकरण कॉन्फ़िगर करें
अपना कैनवास ऐप पंजीकरण बनाने के बाद, प्रमाणीकरण पर जाएँ, और फिर प्लेटफ़ॉर्म जोड़ें चुनें.
प्लेटफ़ॉर्म कॉन्फ़िगरेशन के अंतर्गत, एक प्लेटफ़ॉर्म जोड़ें चुनें, और फिर वेब चुनें।
रीडायरेक्ट URI के अंतर्गत, अपने वेब पृष्ठ का URL दर्ज करें; उदाहरण के लिए, http://contoso.com/index.html।
निहित अनुदान और हाइब्रिड प्रवाह अनुभाग में, एक्सेस टोकन (अंतर्निहित प्रवाह के लिए प्रयुक्त) और ID टोकन (अंतर्निहित और हाइब्रिड प्रवाह के लिए प्रयुक्त) दोनों को चालू करें.
कॉन्फ़िगर करें को चुनें.
अपना को-पायलट टोकन एंडपॉइंट URL खोजें
Copilot Studioमें, सेटिंग्स पर जाएं, और फिर चैनल का चयन करें।
मोबाइल ऐप चुनें.
टोकन एंडपॉइंट के अंतर्गत, कॉपी करें का चयन करें.
अपने वेब पेज में SSO कॉन्फ़िगर करें
रीडायरेक्ट URL के लिए वेब पेज बनाने के लिए Copilot Studio GitHub रेपो में दिए गए कोड का उपयोग करें। GitHub repo से कोड कॉपी करें और नीचे दिए गए निर्देशों का उपयोग करके इसे संशोधित करें।
Azure पोर्टल में अवलोकन पृष्ठ पर जाएं और अपने कैनवास ऐप पंजीकरण से एप्लिकेशन (क्लाइंट) ID और निर्देशिका (टेनेंट) ID की प्रतिलिपि बनाएँ.
Microsoft प्रमाणीकरण लाइब्रेरी (MSAL) को कॉन्फ़िगर करने के लिए:
clientIdअपने आवेदन (क्लाइंट) आईडी को असाइन करें।
को authority असाइन https://login.microsoftonline.com/ करें और अपनी डायरेक्ट्री (टेनेंट) आईडी को अंत में जोड़ें।
उदाहरण के लिए:
var clientApplication;
(function (){
var msalConfig = {
auth: {
clientId: '692e92c7-xxxx-4060-76d3-b381798f4d9c',
authority: 'https://login.microsoftonline.com/7ef988bf-xxxx-51af-01ab-2d7fd011db47'
},
theURL वैरिएबल को आपके द्वारा पहले कॉपी किए गए टोकन एंडपॉइंट URL पर सेट करें। उदाहरण के लिए:
(async function main() {
var theURL = "https://1c0.0.environment.api.powerplatform.com/powervirtualagents/bots/5a099fd/directline/token?api-version=2022-03-01-preview"
एक कस्टम उपसर्ग शामिल करने के लिए userId के मान को संपादित करें। उदाहरण के लिए:
अपने वेब पेज का उपयोग करके अपने को-पायलट का परीक्षण करें
अपने ब्राउज़र में अपना वेब पेज खोलें.
लॉगिन चुनें.
नोट
यदि आपका ब्राउज़र पॉपअप ब्लॉक करता है या आप गुप्त या निजी ब्राउज़िंग विंडो का उपयोग कर रहे हैं, तो आपको लॉग इन करने के लिए कहा जाएगा। अन्यथा, लॉगिन सत्यापन कोड का उपयोग करके पूरा होता है।
एक नया ब्राउज़र टैब खुलता है.
नए टैब पर जाएं और सत्यापन कोड की प्रतिलिपि बनाएँ।
अपने को-पायलट वाले टैब पर वापस जाएं, और सत्यापन कोड को को-पायलट वार्तालाप में पेस्ट करें।
निम्न चित्रण यह दर्शाता है कि Copilot Studio में उपयोगकर्ता बिना लॉगिन प्रॉम्प्ट (SSO) देखे कैसे लॉग इन होता है:
को-पायलट उपयोगकर्ता एक वाक्यांश दर्ज करता है जो साइन-इन विषय को ट्रिगर करता है। साइन-इन विषय को उपयोगकर्ता को साइन इन करने और उपयोगकर्ता के प्रमाणित टोकन (AuthToken चर) का उपयोग करने के लिए डिज़ाइन किया गया है।
Copilot Studio उपयोगकर्ता को उनके कॉन्फ़िगर किए गए पहचान प्रदाता के साथ लॉग इन करने की अनुमति देने के लिए एक लॉगिन प्रॉम्प्ट भेजता है।
को-पायलट का कस्टम कैनवास साइन-इन प्रॉम्प्ट को इंटरसेप्ट करता है और Microsoft Entra आईडी से ऑन-बिहाफ-ऑफ (OBO) टोकन का अनुरोध करता है। कैनवास टोकन को को-पायलट पर भेजता है।
OBO टोकन प्राप्त होने पर, को-पायलट OBO टोकन को " पहुँच टोकन " से बदल देता है और पहुँच टोकन के मान का उपयोग करके AuthToken चर को भर देता है। इस समय IsLoggedIn चर भी सेट किया जाता है।
अपने कस्टम कैनवस के लिए ऐप पंजीकरण आईडी बनाएं Microsoft Entra
SSO सक्षम करने के लिए, आपको दो अलग-अलग ऐप पंजीकरण की आवश्यकता होगी:
ऐप रजिस्ट्रेशन पर जाएं, या तो आइकन का चयन करके या शीर्ष खोज बार में खोज करके।
नया पंजीकरण चुनें.
पंजीकरण के लिए एक नाम दर्ज करें. को-पायलट का नाम उपयोग करना उपयोगी हो सकता है, जिसका कैनवास आप पंजीकृत कर रहे हैं, तथा प्रमाणीकरण के लिए उसे ऐप पंजीकरण से अलग करने में सहायता के लिए "कैनवास" शामिल करें।
उदाहरण के लिए, यदि आपके को-पायलट का नाम "Contoso बिक्री सहायता" है, तो आप ऐप पंजीकरण का नाम "ContosoSalesCanvas" या कुछ ऐसा रख सकते हैं।
समर्थित खाता प्रकार के अंतर्गत खाता प्रकार चुनें. हम अनुशंसा करते हैं कि आप किसी भी संगठनात्मक निर्देशिका (कोई भी ID निर्देशिका - मल्टीटेनेंट) में खाते और व्यक्तिगत Microsoft खाते (उदाहरण के लिए Skype,) का चयन करें। Microsoft Entra Xbox
रीडायरेक्ट URI अनुभाग को अभी खाली छोड़ दें, क्योंकि आप अगले चरणों में वह जानकारी दर्ज करेंगे। पंजीकरण करें चुनें.
पंजीकरण पूरा होने के बाद, यह अवलोकन पृष्ठ पर खुलता है। मेनिफेस्ट पर जाएं. पुष्टि करें कि accessTokenAcceptedVersion को 2 पर सेट किया गया है. यदि ऐसा नहीं है, तो इसे 2 में बदलें और फिर सहेजें चुनें।
रीडायरेक्ट URL जोड़ें
पंजीकरण खुला होने पर, प्रमाणीकरण पर जाएं और फिर प्लेटफ़ॉर्म जोड़ें का चयन करें।
कॉन्फ़िगर प्लेटफ़ॉर्म ब्लेड पर, वेब का चयन करें.
रीडायरेक्ट URIs के अंतर्गत, उस पृष्ठ का पूरा URL जोड़ें जहां आपका चैट कैनवास होस्ट किया गया है। अन्तर्निहित अनुमति खंड के अन्तर्गत, आईडी टोकन और एक्सेस टोकन चैकबॉक्सों को चुनें.
अपने परिवर्तनों की पुष्टि करने के लिए कॉन्फ़िगर करें चुनें.
API अनुमतियाँ पर जाएँ. अपने किराएदार नाम के लिए व्यवस्थापक सहमति प्रदान करें <चुनें> और फिर हां।
महत्त्वपूर्ण
उपयोगकर्ताओं को प्रत्येक एप्लिकेशन के लिए सहमति देने से बचने के लिए, किसी वैश्विक व्यवस्थापक, एप्लिकेशन व्यवस्थापक या क्लाउड एप्लिकेशन व्यवस्थापक को आपके एप्लिकेशन पंजीकरणों के लिए टेनेंट-व्यापी सहमति प्रदान करनी होगी। ...
अपने को-पायलट के लिए एक कस्टम स्कोप परिभाषित करें
प्रमाणीकरण अनुप्रयोग पंजीकरण के भीतर कैनवास अनुप्रयोग पंजीकरण के लिए API को अनावृत्त करके एक कस्टम व्यापकता को परिभाषित करें. स्कोप्स आपको उपयोगकर्ता और व्यवस्थापक भूमिकाएं और पहुंच अधिकार निर्धारित करने की अनुमति देते हैं।
यह चरण प्रमाणीकरण के लिए प्रमाणीकरण अनुप्रयोग पंजीकरण और आपके कस्टम कैनवास के लिए अनुप्रयोग पंजीकरण के मध्य एक विश्वास संबंध बनाता है.
वह ऐप पंजीकरण खोलें जिसे आपने प्रमाणीकरण कॉन्फ़िगर करते समय बनाया था .
API अनुमतियाँ पर जाएँ और सुनिश्चित करें कि आपके को-पायलट के लिए सही अनुमतियाँ जोड़ी गई हैं। अपने किराएदार नाम के लिए व्यवस्थापक सहमति प्रदान करें <चुनें> और फिर हां।
महत्त्वपूर्ण
उपयोगकर्ताओं को प्रत्येक एप्लिकेशन के लिए सहमति देने से बचने के लिए, किसी वैश्विक व्यवस्थापक, एप्लिकेशन व्यवस्थापक या क्लाउड एप्लिकेशन व्यवस्थापक को आपके एप्लिकेशन पंजीकरणों के लिए टेनेंट-व्यापी सहमति प्रदान करनी होगी। ...
API एक्सपोज़ करें पर जाएं और स्कोप जोड़ेंचुनें।
प्रदर्शन जानकारी सहित कार्यक्षेत्र का नाम दर्ज करें जो उपयोगकर्ताओं को SSO स्क्रीन पर आने पर दिखाई जानी चाहिए. स्कोप जोड़ें चुनें.
क्लाइंट अनुप्रयोग जोड़ें का चयन करें.
कैनवास ऐप पंजीकरण के लिए एप्लिकेशन (क्लाइंट) आईडी अवलोकन पेज से क्लाइंट आईडी फ़ील्ड में दर्ज करें। आपके द्वारा बनाए गए सूचीबद्ध व्यापकता के लिए चेकबॉक्स का चयन करें.
एप्लिकेशन जोड़ें चुनें.
SSO सक्षम करने के लिए Copilot Studio में प्रमाणीकरण कॉन्फ़िगर करें
प्रमाणीकरण कॉन्फ़िगरेशन पृष्ठ में टोकन एक्सचेंज URL का उपयोग बॉट फ्रेमवर्क के माध्यम से अनुरोधित पहुँच टोकन के लिए OBO टोकन का आदान-प्रदान करने के लिए किया जाता है। Copilot Studio
Copilot Studio वास्तविक विनिमय करने के लिए Microsoft Entra आईडी पर कॉल करता है।
Copilot Studioपर लॉग इन करें.
शीर्ष मेनू पर को-पायलट आइकन का चयन करके और सही को-पायलट चुनकर पुष्टि करें कि आपने वह को-पायलट चुना है जिसके लिए आप प्रमाणीकरण सक्षम करना चाहते हैं।
नेविगेशन मेनू में, सेटिंग के अंतर्गत, सुरक्षा चुनें. फिर प्रमाणीकरण कार्ड चुनें.
एक्सपोज़ एन एपीआई ब्लेड से को-पायलट के प्रमाणीकरण ऐप पंजीकरण के लिए टोकन एक्सचेंज URL फ़ील्ड में पूर्ण स्कोप URI दर्ज करें। URI api://1234-4567/scope.name प्रारूप में है.
सहेजें चुनें और फिर को-पायलट सामग्री प्रकाशित करें।
SSO को सक्षम करने के लिए अपना कस्टम कैनवास HTML कोड कॉन्फ़िगर करें
लॉगिन कार्ड अनुरोध को रोकने और OBO टोकन का आदान-प्रदान करने के लिए कस्टम कैनवास पृष्ठ को अपडेट करें जहां को-पायलट स्थित है।
अपने <head> अनुभाग में <script> टैग में निम्न कोड जोड़कर Microsoft प्रमाणीकरण लाइब्रेरी (MSAL) को कॉन्फ़िगर करें।
कैनवास ऐप पंजीकरण के लिए clientId एप्लिकेशन (क्लाइंट) ID के साथ अपडेट करें.<Directory ID> को डायरेक्ट्री (टेनेंट) आईडी से प्रतिस्थापित करें. आपको ये आईडी कैनवास ऐप पंजीकरण के लिए अवलोकन पृष्ठ से मिलती हैं.
<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>
निम्नलिखित <स्क्रिप्ट > को <बॉडी > अनुभाग में प्रविष्ट करें। यह स्क्रिप्ट resourceUrl को पुनः प्राप्त करने और आपके वर्तमान टोकन को 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>
निम्नलिखित <स्क्रिप्ट > को <बॉडी > अनुभाग में प्रविष्ट करें। main विधि के अंतर्गत, यह कोड आपके store में आपके को-पायलट के विशिष्ट पहचानकर्ता के साथ एक सशर्त जोड़ता है। यह आपके userId चर के रूप में एक अद्वितीय आईडी भी उत्पन्न करता है।
अपनी को-पायलट की आईडी से अपडेट करें। <COPILOT ID> आप जिस को-पायलट का उपयोग कर रहे हैं उसके लिए चैनल टैब पर जाकर और पोर्टल पर मोबाइल ऐप Copilot Studio का चयन करके अपने को-पायलट की आईडी देख सकते हैं।
<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>
पूर्ण नमूना कोड
अधिक जानकारी के लिए, आप पूर्ण नमूना कोड पा सकते हैं, जिसमें MSAL और स्टोर सशर्त स्क्रिप्ट पहले से ही शामिल हैं हमारे GitHub रेपो पर।
जल्द आ रहा है: 2024 के दौरान हम सामग्री के लिए फीडबैक तंत्र के रूप में GitHub मुद्दों को चरणबद्ध तरीके से समाप्त कर देंगे और इसे एक नई फीडबैक प्रणाली से बदल देंगे. अधिक जानकारी के लिए, देखें: https://aka.ms/ContentUserFeedback.