Megosztás a következőn keresztül:


Útmutató: Jogkivonat kérése az ACS-től az OAuth WRAP protokollon keresztül

Érvényesség

  • Microsoft Azure Active Directory Access Control (más néven Access Control Szolgáltatás vagy ACS)

Áttekintés

Amikor a webalkalmazások és -szolgáltatások ACS használatával kezelik a hitelesítést, az ügyfélnek be kell szereznie az ACS által kiadott biztonsági jogkivonatot az alkalmazásba vagy szolgáltatásba való bejelentkezéshez. Az ACS által kiadott jogkivonat (kimeneti jogkivonat) beszerzéséhez az ügyfélnek vagy közvetlenül az ACS-vel kell hitelesítenie, vagy el kell küldenie az ACS-nek az identitásszolgáltatója által kiadott biztonsági jogkivonatot (bemeneti jogkivonat). Az ACS ellenőrzi ezt a bemeneti biztonsági jogkivonatot, feldolgozza a jogkivonat identitásjogcímeit az ACS szabálymotoron keresztül, kiszámítja a kimeneti identitás jogcímeit, és kiad egy kimeneti biztonsági jogkivonatot.

Ez a témakör azt ismerteti, hogyan kérhet jogkivonatot az ACS-től az OAuth WRAP protokollon keresztül. Az OAuth WRAP protokollon keresztüli összes jogkivonat-kérés SSL-en keresztül lesz továbbítva. Az ACS mindig kiad egy egyszerű webes jogkivonatot (SWT) az OAuth WRAP protokollon keresztül, egy megfelelően formázott jogkivonat-kérésre válaszul. Az OAuth WRAP protokollon keresztüli jogkivonat-kérelmeket a rendszer egy HTTP POST-ben küldi el az ACS-nek. Az OAuth WRAP protokollon keresztül bármilyen olyan platformról kérhet ACS-jogkivonatot, amely KÉPES HTTPS FORM POST-t készíteni: .NET-keretrendszer, Windows Communication Foundation (WCF), Silverlight, ASP.NET, Java, Python, Ruby, PHP, Flash és egyéb platformok.

Az alábbi táblázat az ACS által kiadott SWT-jogkivonat OAuth WRAP protokollon keresztüli lekérésének három támogatott módszerét sorolja fel.

Az ACS-ből az OAuth WRAP protokollon keresztüli jogkivonat kérésének három módszere

Jogkivonat-kérési módszer Description

Jelszó-jogkivonat-kérések

Ez a legegyszerűbb módszer megköveteli, hogy az ügyfél közvetlenül az OAuth WRAP protokollon keresztül küldjön egy felhasználónevet és jelszót egy szolgáltatásidentitásból az ACS-nek a hitelesítéshez.

SWT-jogkivonat-kérések

Ez a módszer megköveteli, hogy az ügyfél küldjön egy SWT-jogkivonatot, amely egy szolgáltatásidentitás-szimmetrikus kulccsal vagy identitásszolgáltatói szimmetrikus kulccsal írható alá az ACS-nek az OAuth WRAP protokollon keresztül a hitelesítéshez.

SAML-jogkivonat-kérelmek

Elsősorban az Active Directory összevonási szolgáltatás (AD FS) 2.0-s integrációjához készült Security Assertion Markup Language (SAML) metódus megköveteli, hogy az ügyfél aláírt SAML-jogkivonatot küldjön az ACS-nek az OAuth WRAP protokollon keresztül a hitelesítéshez. Ez a módszer lehetővé teszi, hogy az ügyfél vállalati identitást használjon az ACS-hitelesítéshez.

Jogkivonatot kibocsátó végpont

Az OAuth WRAP protokollon keresztüli összes ACS-jogkivonat-kérés egy ACS-jogkivonatot kibocsátó végpontra irányul. A végpont URI-ja a Access Control névtértől függ. A névtér DNS-névelőtagként jelenik meg egy jogkivonat-kérelem URI-jában. A DNS-név többi része ki van javítva, ahogyan az elérési út is. Ha például a "mysnservice" nevű Access Control névtérből szeretne jogkivonatot kérni, a jogkivonat-kérést a következő URI-ra irányíthatja: https://mysnservice.accesscontrol.windows.net/WRAPv0.9.

Jelszó-jogkivonat-kérések

Jelszó-jogkivonat-kéréssel az ügyfél közvetlenül az OAuth WRAP protokollon keresztül küldhet felhasználónevet és jelszót egy szolgáltatásidentitásból az ACS-nek a hitelesítéshez. Ez a legegyszerűbb módja annak, hogy jogkivonatot kérjen az ACS-től az OAuth WRAP protokoll használatával. Az SSL-kapcsolat létesítésen kívül ez a megközelítés nem igényel titkosítási képességet. A gyakorlatban hasonló a REST-webszolgáltatásokban elterjedt felhasználónév-jelszó modellhez. Az ilyen típusú jogkivonat-kérés valójában EGY HTTPS-űrlap POST. A jelszó-jogkivonat-kérés paraméterei űrlapkódolva vannak.

Az alábbi példa egy egyszerű szöveges kérés vezetékes nyomkövetésére mutat egy "mysnservice" nevű névtérre.

POST /WRAPv0.9/ HTTP/1.1
Host: mysnservice.accesscontrol.windows.net
Content-Type: application/x-www-form-urlencoded

wrap_scope=http%3A%2F%2Fmysnservice.com%2Fservices%2F&
wrap_name=mysncustomer1&
wrap_password=5znwNTZDYC39dqhFOTDtnaikd1hiuRa4XaAj3Y9kJhQ%3D

Az alábbi táblázat azoknak a paramétereknek a nevét, leírását és értékkövetelményeit tartalmazza, amelyeknek jelen kell lenniük egy jelszókivonat-kérésben:

Paraméter neve Leírás Értékkövetelmények

wrap_scope

Megfelel a jogkivonat-kérésnek egy szabálykészlettel. Állítsa a paraméter értékét a függő entitás alkalmazástartományának értékére. Ezt az értéket (a Tartomány mezőben) az ACS felügyeleti portálon szerezheti be, ha kiválasztja a megfelelő függő entitásalkalmazást a Függő entitásalkalmazások lapon.

  • HTTP- vagy HTTP-URI

  • Nincsenek lekérdezési paraméterek vagy horgonyok.

  • Elérésiút-szegmensek <= 32.

  • Maximális hossz: 256 karakter.

  • URL-kódolásúnak kell lennie.

wrap_name

Ellenőrzi a következő paraméter kulcsát. Állítsa a paraméter értékét egy szolgáltatásidentitás nevére a Access Control névtérben. Ezt az értéket (a Név mezőben) az ACS felügyeleti portálon szerezheti be, ha kiválasztja a megfelelő szolgáltatásidentitást a Szolgáltatásidentitások lapon.

  • Minimális hossz: 1 karakter.

  • Maximális hossz: 128 karakter.

  • URL-kódolásúnak kell lennie.

wrap_password

Hitelesíti a bejövő kérést. Állítsa a paraméter értékét egy szolgáltatásidentitás jelszavára a Access Control névtérben. Ezt az értéket (a Hitelesítő adatok szerkesztése lap Jelszó mezőjében) az ACS felügyeleti portálon szerezheti be, ha először kiválasztja a megfelelő szolgáltatásidentitást a Szolgáltatásidentitások lapon, majd kiválasztja a megfelelő jelszót a Szolgáltatásidentitás szerkesztése lap Hitelesítő adatok táblájában.

  • Sztring, legalább 1 és legfeljebb 64 karakter hosszúságú.

  • URL-kódolásúnak kell lennie.

Ezeknek a paramétereknek az értékeit URL-kódolással kell megadni, mielőtt elküldené a kérést az ACS-nek. A webalkalmazás vagy a szolgáltatás megadhatja a wrap_scope értékét az ügyfélnek, vagy az ügyfél dönthet úgy, hogy a wrap_scope paraméter értékét a webalkalmazás vagy szolgáltatás erőforrás-céljának URI-jára állítja be.

Az OAuth WRAP protokollon keresztüli jelszó-jogkivonat-kérelmek további paramétereket is tartalmazhatnak, amelyeket az ACS a kimeneti jogcím számítási folyamata során használhat. Ezeknek a további paramétereknek és értékeknek URL-kódolásúnak kell lenniük, és az értékeket nem szabad idézni.

A jelszó jogkivonat-kérési módszere meglehetősen egyszerű a használatával.

WebClient client = new WebClient();
client.BaseAddress = string.Format("https://mysnservice.accesscontrol.windows.net");

NameValueCollection values = new NameValueCollection();
values.Add("wrap_name", "mysncustomer1");
values.Add("wrap_password", "5znwNTZDYC39dqhFOTDtnaikd1hiuRa4XaAj3Y9kJhQ=");
values.Add("wrap_scope", "http://mysnservice.com/services");

// WebClient takes care of the URL Encoding
byte[] responseBytes = client.UploadValues("WRAPv0.9", "POST", values);

// the raw response from ACS
string response = Encoding.UTF8.GetString(responseBytes);

A kimeneti jogkivonat ACS-ből való kicsomagolásával és webalkalmazásba vagy szolgáltatásba való küldésével kapcsolatos információkért tekintse meg a jogkivonat kibontásáról és webalkalmazásnak vagy szolgáltatásnak való küldéséről szóló témakört.

SWT-jogkivonat-kérések

Az ACS-től az OAuth WRAP protokollon keresztül is kérhet jogkivonatot egy szimmetrikus kulccsal aláírt SWT-jogkivonattal. Minden SWT-jogkivonat-kérés EGY HTTPS-űrlap postán keresztül történik. A tokenkérelem-metódus paraméterértékei űrlapkódolva vannak.

Az alábbi példa egy SWT-jogkivonat-kérés vezetékes nyomkövetésére mutat a "mysnservice" névtérre.

POST /WRAPv0.9/ HTTP/1.1
Host: mysnservice.accesscontrol.windows.net
Content-Type: application/x-www-form-urlencoded

wrap_scope=http%3A%2F%2Fmysnservice.com%2Fservices%2F&
wrap_assertion_format=SWT&
wrap_assertion=Issuer%3dmysncustomer1%26HMACSHA256%3db%252f%252bJFwbngGdufECFjQb8qhb9YH0e32Cf9ABMDZFiPPA%253d

A SWT-jogkivonat-kérelmeknek a következő paraméterekkel és értékekkel kell rendelkezniük:

Paraméter neve Leírás Értékkövetelmények

wrap_scope

Megfelel a jogkivonat-kérésnek egy szabálykészlettel.

  • Állítsa a paraméter értékét a függő entitás alkalmazástartományának értékére. Ezt az értéket (a Tartomány mezőben) az ACS felügyeleti portálon szerezheti be, ha kiválasztja a megfelelő függő entitásalkalmazást a Függő entitásalkalmazások lapon.

  • HTTP vagy HTTP(s) URI.

  • Nincsenek lekérdezési paraméterek vagy horgonyok.

  • Elérésiút-szegmensek <= 32.

  • Maximális hossz: 256 karakter.

  • Az URL-címnek kódoltnak kell lennie.

wrap_assertion

Ez az ACS-nek küldött bemeneti jogkivonat.

  • Aláírt SWT-jogkivonat kiállítót és HMACSHA256-paramétereket tartalmazó bemeneti jogcímekkel.

  • Maximális hossz: 2048 karakter.

  • Az URL-címnek kódoltnak kell lennie.

wrap_assertion_format

Ez az ACS-be küldött bemeneti jogkivonat formátuma.

SWT

Az alábbi példában látható módon az SWT-jogkivonat-kérés létrehozásához szükséges kód hasonlít a jelszó-jogkivonat kéréséhez szükséges kódra.

WebClient client = new WebClient();
client.BaseAddress = string.Format("https://mysnservice.accesscontrol.windows.net");

NameValueCollection values = new NameValueCollection();
// add the wrap_scope
values.Add("wrap_scope", "http://mysnservice.com/services");
// add the format
values.Add("wrap_assertion_format", "SWT");
// add the SWT
values.Add("wrap_assertion", "Issuer=mysncustomer1&HMACSHA256=b%2f%2bJFwbngGdufECFjQb8qhb9YH0e32Cf9ABMDZFiPPA%3d");
// WebClient takes care of the remaining URL Encoding
byte[] responseBytes = client.UploadValues("WRAPv0.9", "POST", values);

// the raw response from ACS
string response = Encoding.UTF8.GetString(responseBytes);

A válasz ACS-ből való kicsomagolásáról és a webalkalmazásnak vagy szolgáltatásnak való elküldéséről további információt a jogkivonat kibontása és webalkalmazásnak vagy szolgáltatásnak való elküldése című témakörben talál.

SWT-jogkivonat létrehozása

Az SWT-jogkivonat olyan kulcs-érték párok készlete, amelyek egy kiállítói kulccsal (szimmetrikus kulccsal) vannak aláírva. Az SWT-jogkivonat-kérelemben az ACS-nek küldött SWT-jogkivonatnak tartalmaznia kell a Kiállító és a HMACSHA256 paramétereket, valamint további paramétereket, például az ExpiresOn, a Audience és más ügyfélspecifikus jogcímeket. Az alábbi táblázat az SWT-jogkivonat paramétereinek nevét és leírását tartalmazza:

Paraméter neve Leírás

Kibocsátó

Az ACS-ben megkeresi a jogkivonat aláírásához használt kulcsot. Ha az aláírás érvényes, akkor a rendszer ezt az értéket használja a kimeneti jogcím kiszámításához.

Ezt a paramétert beállíthatja egy identitásszolgáltató tartományának értékére a Access Control névtérben, vagy egy szolgáltatásidentitás nevére a Access Control névtérben. Ezt az értéket (az Identitásszolgáltató szerkesztése lap Tartomány mezőjében) az ACS felügyeleti portálon szerezheti be, ha kiválasztja a megfelelő identitásszolgáltatót az Identitásszolgáltatók lapon. Ezt az értéket az ACS felügyeleti szolgáltatáson keresztül is beszerezheti – ez az egyes identitásszolgáltatókhoz létrehozott "Kiállító" rekord névtulajdonsága.

HMACSHA256

Az ACS-ben ellenőrzi az SWT-aláírást, és megkeresi a Kiállító paraméterben megnevezett kiállítókulcsot.

Az SWT-aláírás a szolgáltatásidentitáshoz vagy egy identitásszolgáltatóhoz csatolt szimmetrikus aláírókulccsal jön létre a Access Control névtérben.

Célközönség

Ha van ilyen, az ACS ezt az értéket használja annak biztosításához, hogy az ACS legyen az SWT-jogkivonat célhelye. Ez a Access Control névtér URL-címe, például:https://contoso.accesscontrol.windows.net/

Lejárat dátuma

Ha jelen van (alapidőszakban), azt jelzi, hogy a jogkivonat lejárt-e. Ennek a paraméternek például az értéke lehet 1324300962.

További jogcímek

Ha van ilyen, az ACS ezeket a paramétereket használja a kimeneti jogcím kiszámításához. Minden jogcímtípus csak egyszer jelenhet meg. Az azonos jogcímtípusú több jogcímértéket össze kell fűzni egy "," (vessző) karakterrel. További információ a jogcímek ACS-ben való érvényesítéséről: Jogcímek helyességi feltételének meghatározása az OAuth WRAP protokollon keresztül.

Az alábbi kódminta bemutatja, hogyan hozhat létre SWT-jogkivonatot a használatával. Olyan típust tartalmaz, amely az Issuer és a HMACSHA256 paramétereket tartalmazó SWT-jogkivonatokat készít.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;

public class TokenFactory
{
    string signingKey;   
    string issuer;
    
    public TokenFactory(string issuer, string signingKey)
    {
        this.issuer = issuer;
        this.signingKey = signingKey;
    }

    public string CreateToken()
    {
        StringBuilder builder = new StringBuilder();

        // add the issuer name
        builder.Append("Issuer=");
        builder.Append(HttpUtility.UrlEncode(this.issuer));

        string signature = this.GenerateSignature(builder.ToString(), this.signingKey);
        builder.Append("&HMACSHA256=");
        builder.Append(signature);

        return builder.ToString();
    }

   
    private string GenerateSignature(string unsignedToken, string signingKey)
    {
        HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String(signingKey));

        byte[] locallyGeneratedSignatureInBytes = hmac.ComputeHash(Encoding.ASCII.GetBytes(unsignedToken));

        string locallyGeneratedSignature = HttpUtility.UrlEncode(Convert.ToBase64String(locallyGeneratedSignatureInBytes));

        return locallyGeneratedSignature;
    }
}

SAML-jogkivonat-kérelmek

Az SAML-jogkivonat-kérési módszer elsősorban az AD FS 2.0 integrációjára szolgál, és lehetővé teszi, hogy az ügyfél vállalati identitást (Active Directoryt) használjon az ACS-hitelesítéshez. Az SAML-jogkivonat-kérési metódussal elküldhet egy aláírt SAML 1.1-es vagy egy AD FS 2.0 által kibocsátott SAML 2.0-jogkivonatot (bemeneti jogkivonatot) az ACS-nek az OAuth WRAP protokollon keresztül.

Az ACS a szabályaival kiszámítja a kimeneti jogcímeket, SWT-jogkivonatba (kimeneti jogkivonatba) csoportosítja őket, aláírja, majd az OAuth WRAP protokollon keresztül visszaküldi az ügyfélnek.

Az SAML-jogkivonat-kérelmeknek a következő paraméterekkel és értékekkel kell rendelkezniük:

Paraméter neve Leírás Értékkövetelmények

wrap_scope

Megfelel a jogkivonat-kérelemnek egy szabálykészlethez.

  • Állítsa a paraméter értékét a függő entitás alkalmazástartományának értékére. Ezt az értéket (a Tartomány mezőben) az ACS felügyeleti portálon szerezheti be, ha kiválasztja a megfelelő függő entitásalkalmazást a Függő entitásalkalmazások lapon.

  • HTTP vagy HTTP URI.

  • Nincsenek lekérdezési paraméterek vagy horgonyok.

  • Elérésiút-szegmensek <= 32.

  • Maximális hossz: 256 karakter.

  • URL-címnek kódoltnak kell lennie.

wrap_assertion

Ez az ACS-nek küldött bemeneti jogkivonat.

  • Aláírt SAML 1.1- vagy 2.0-jogkivonat bemeneti jogcímekkel. Az SAML 1.1-jogkivonatok jogkivonat-korlátozásként legalább egy bemeneti jogcímet igényelnek. Ez azt jelenti, hogy az SAML 1.1 jogkivonat-hitelesítéshez identitásszolgáltatót vagy jogcímalapú szolgáltatásidentitást kell használni. Az SAML 2.0-jogkivonatok nem igényelnek bemeneti jogcímeket a szolgáltatásidentitáson történő hitelesítéshez, az implicit NameIdentifier jogcímen kívül, ezért az SAML 2.0-jogkivonatok olyan normál szolgáltatásidentitáson való hitelesítésre használhatók, amely nem jogcímalapú.

  • URL-címnek kódoltnak kell lennie.

wrap_assertion_format

Ez az ACS-be küldött bemeneti jogkivonat formátuma.

SAML

Az alábbi példa az SAML-jogkivonat-kérés végrehajtásához szükséges kódra mutat be példát.

private static string SendSAMLTokenToACS(string samlToken)
{
 try
 {
  WebClient client = new WebClient();
  client.BaseAddress = string.Format("https://mysnservice.accesscontrol.windows.net");
  NameValueCollection parameters = new NameValueCollection();
  parameters.Add("wrap_assertion_format", "SAML");
  parameters.Add("wrap_assertion", samlToken);
  parameters.Add("wrap_scope", "http://mysnservice.com/services");

  byte[] responseBytes = client.UploadValues("WRAPv0.9", parameters);
  string response = Encoding.UTF8.GetString(responseBytes);

  return response
   .Split('&')
   .Single(value => value.StartsWith("wrap_access_token=", StringComparison.OrdinalIgnoreCase))
   .Split('=')[1];
 }
 catch (WebException wex)
 {
  string value = new StreamReader(wex.Response.GetResponseStream()).ReadToEnd();
  throw;
 }
}  

Az ACS válaszának kicsomagolásával és webalkalmazásba vagy szolgáltatásba való küldésével kapcsolatos információkért lásd: A jogkivonat kicsomagolása és webalkalmazásba vagy szolgáltatásba való elküldése.

Jogcím-érvényesítés az OAuth WRAP protokollon keresztül

Az ACS 1.0 jogkivonat-kérelmek viselkedésével való visszamenőleges kompatibilitás érdekében az ACS támogatja a jogcímek jogkivonat-kérelmek részeként történő érvényesítését.

Regisztrálja a helyes alkalmazást vagy szolgáltatást ACS-identitásszolgáltatóként.

Ennek ajánlott módja a helyes alkalmazás vagy szolgáltatás regisztrálása ACS-identitásszolgáltatóként. Ezután az alkalmazás vagy szolgáltatás jogkivonatot kér az ACS-től egy SAML- vagy SWT-jogkivonat bemutatásával, amely tartalmazza az érvényesíteni kívánt jogcímeket, és ezt a jogkivonatot egy ACS-ben tárolt identitásszolgáltatói kulccsal írja alá. Például az AD FS 2.0 OAuth WRAP protokolljával vagy bármely olyan egyéni biztonságijogkivonat-szolgáltatással (STS) küldhet SAML-jogkivonat-kérést az ACS-nek, amely Windows Identity Foundation (WIF) használatával készült, és WS-Federation identitásszolgáltatóként regisztrálva van az ACS-ben.

Az ACS felügyeleti portálon WS-Federation metaadatok használatával regisztrálhat egy identitásszolgáltatót, vagy az ACS felügyeleti szolgáltatással egyedileg állíthat be identitásszolgáltatói tulajdonságokat, címeket és kulcsokat. (Lásd például : Az ACS felügyeleti szolgáltatás használata az AD FS 2.0 vállalati identitásszolgáltatóként való konfigurálásához.) A jogcímek jogkivonat-kérelmekben való érvényesítésének ebben a módszerében nincs szükség szolgáltatásidentitásra. Ez a módszer az összes ACS által támogatott protokollon keresztül működik.

A jogkivonat kibontása és elküldése egy webalkalmazásnak vagy szolgáltatásnak

Ha a jogkivonat-kérelem sikeresen hitelesítve van, az ACS két űrlapkódolt paramétert ad vissza: wrap_token és wrap_token_expires_in. Ezeknek a paramétereknek az értékei a tényleges SWT-jogkivonat, amellyel az ügyfél hozzáférhet a webalkalmazáshoz vagy szolgáltatáshoz, valamint a jogkivonat hozzávetőleges hátralévő élettartama (másodpercben).

Mielőtt elküldi az SWT-jogkivonatot a webalkalmazásnak vagy szolgáltatásnak, az ügyfélnek ki kell nyernie és URL-dekódolnia kell azt az ACS-válaszból. Ha a webalkalmazásnak vagy szolgáltatásnak meg kell jelenítenie a jogkivonatot a HTTP-fejlécben Authorization , a jogkivonatot a séma WRAPv0.9előzi meg.

Az alábbi példakód bemutatja, hogyan csomagolhat ki egy jogkivonatot, és hogyan formázhatja a fejlécet Authorization .

WebClient client = new WebClient();
client.BaseAddress = string.Format("https://mysnservice.accesscontrol.windows.net");

NameValueCollection values = new NameValueCollection();
values.Add("wrap_name", "mysncustomer1");
values.Add("wrap_password", "5znwNTZDYC39dqhFOTDtnaikd1hiuRa4XaAj3Y9kJhQ=");
values.Add("wrap_scope", "http://mysnservice.com/services");

// WebClient takes care of the URL Encoding
byte[] responseBytes = client.UploadValues("WRAPv0.9", "POST", values);

// the raw response from ACS
string response = Encoding.UTF8.GetString(responseBytes);

string token = response
    .Split('&')
    .Single(value => value.StartsWith("wrap_token=", StringComparison.OrdinalIgnoreCase))
    .Split('=')[1];

string.Format("WRAP access_token=\"{0}\"", HttpUtility.UrlDecode(token));

ACS-hibakódok és -leírások

Az ACS olyan hibákat ad vissza, amelyek nem felelnek meg a jogkivonat-kérelmeknek. A REST-kialakításnak megfelelően a hiba egy HTTP-válaszkódot tartalmaz. Az ACS-hibák sok esetben tartalmaznak egy SubCode , a Detail sikertelen művelettel kapcsolatos kontextust is. A hiba formátuma: Error:Code:<httpStatus>:Sub-Code:<code>:D etail:<message>. A Content-Type hiba mindig szöveges/egyszerű.

HTTP/1.1 401 Access Forbidden
Content-Type: text/plain; charset=us-ascii

Error:Code:401:SubCode:T0:Detail:ACS50009: SWT token is invalid. :TraceID:<trace id value>:TimeStamp:<timestamp value>

Az ACS-hibakódokkal kapcsolatos további információkért lásd az ACS hibakódjait.

Az ACS által visszaadott hiba hibakeresése vagy helyreállítása során gyakran szükséges elolvasni a válasz törzsét. Az alábbi példakód bemutatja, hogyan olvasható be a hibaüzenet egy WebException objektumból.

try
{
    WebClient client = new WebClient();
    client.BaseAddress = string.Format("https://mysnservice.accesscontrol.windows.net");

    NameValueCollection values = new NameValueCollection();
    values.Add("wrap_name", "mysncustomer1");
    values.Add("wrap_password", "5znwNTZDYC39dqhFOTDtnaikd1hiuRa4XaAj3Y9kJhQ=");
    values.Add("wrap_scope", "http://mysnservice.com/services");

    // WebClient takes care of the URL Encoding
    byte[] responseBytes = client.UploadValues("WRAPv0.9", "POST", values);

    // the raw response from ACS
    string response = Encoding.UTF8.GetString(responseBytes);

    string token = response
        .Split('&')
        .Single(value => value.StartsWith("wrap_access_token=",       StringComparison.OrdinalIgnoreCase))
        .Split('=')[1];
}
catch (WebException wex)
{
    if (wex.Response != null)
    {
        // the response Stream contains the error message
        StreamReader reader = new StreamReader(wex.Response.GetResponseStream());
        string message = reader.ReadToEnd();
    }
    // Throw as appropriate
}

Lásd még:

Alapelvek

Az ACS útmutatója