Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak buforować token uwierzytelniania w celu zwiększenia wydajności aplikacji.
Korzystanie z ASP.NET
Zaimportuj Microsoft.Identity.Client pakiet NuGet, który jest używany do uzyskiwania tokenu. Aby uzyskać szczegółowe informacje, zobacz Zainstaluj pakiet NuGet klienta tożsamości.
Utwórz właściwość poufnej aplikacji klienckiej.
private IConfidentialClientApplication _confidentialClientApplication;
private IConfidentialClientApplication ConfidentialClientApplication
{
get {
if (_confidentialClientApplication == null) {
_confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(ClientId)
.WithClientSecret(ClientSecret)
.WithAuthority($"https://login.windows.net/{TenantId}")
.Build();
}
return _confidentialClientApplication;
}
}
Następnie użyj poniższego kodu, aby uzyskać AuthenticationResult, przy użyciu wartości uwierzytelniania uzyskanych podczas tworzenia zasobu Czytnik Immersyjny.
Ważne
Pakiet NuGet Microsoft.IdentityModel.Clients.ActiveDirectory i biblioteka ADAL (Azure AD Authentication Library) zostały wycofane. Od 30 czerwca 2020 r. nie dodano żadnych nowych funkcji. Zdecydowanie zachęcamy do uaktualnienia. Aby dowiedzieć się więcej, zobacz przewodnik migracji.
public async Task<string> GetTokenAsync()
{
const string resource = "https://cognitiveservices.azure.com/";
var authResult = await ConfidentialClientApplication.AcquireTokenForClient(
new[] { $"{resource}/.default" })
.ExecuteAsync()
.ConfigureAwait(false);
return authResult.AccessToken;
}
Obiekt AuthenticationResult ma właściwość AccessToken, która jest rzeczywistym tokenem używanym podczas uruchamiania Czytnika Immersyjnego przy użyciu zestawu SDK. Ma ExpiresOn również właściwość, która określa, kiedy token wygaśnie. Przed uruchomieniem Czytnik immersyjny możesz sprawdzić, czy token wygasł, i uzyskać nowy token tylko wtedy, gdy wygasł.
Korzystanie z Node.js
Dodaj pakiet npm request do projektu. Użyj następującego kodu, aby uzyskać token przy użyciu wartości uwierzytelniania uzyskanych podczas tworzenia zasobu Czytnik immersyjny.
router.get('/token', function(req, res) {
request.post(
{
headers: { 'content-type': 'application/x-www-form-urlencoded' },
url: `https://login.windows.net/${TENANT_ID}/oauth2/token`,
form: {
grant_type: 'client_credentials',
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
resource: 'https://cognitiveservices.azure.com/'
}
},
function(err, resp, json) {
const result = JSON.parse(json);
return res.send({
access_token: result.access_token,
expires_on: result.expires_on
});
}
);
});
Właściwość expires_on to data i godzina wygaśnięcia tokenu, wyrażona jako liczba sekund od 1 stycznia 1970 utc. Użyj tej wartości, aby określić, czy token wygasł przed podjęciem próby uzyskania nowego tokenu.
async function getToken() {
if (Date.now() / 1000 > CREDENTIALS.expires_on) {
CREDENTIALS = await refreshCredentials();
}
return CREDENTIALS.access_token;
}