İstemci bir kaynak sunucudan OAuth 2.0 erişim belirteciyle korunan bir kaynak almasını istediğinde, bu sunucu belirteci nasıl doğrular? OAuth 2.0 yenileme belirteci protokolü?
İstemci bir kaynak sunucudan OAuth 2.0 erişim belirteciyle korunan bir kaynak almasını istediğinde, bu sunucu belirteci nasıl doğrular? OAuth 2.0 yenileme belirteci protokolü?
Yanıtlar:
Güncelleme Kasım 2015: Aşağıdaki Hans Z.'ye göre - bu aslında RFC 7662'nin bir parçası olarak tanımlandı .
Orijinal Yanıt: OAuth 2.0 spec ( RFC 6749 ), erişim belirteci (AT) doğrulaması için Kaynak Sunucu (RS) ile Yetkilendirme Sunucusu (AS) arasındaki etkileşimi açıkça tanımlamaz. Gerçekten AS'nin token biçimine / stratejisine bağlıdır - bazı jetonlar bağımsızdır ( JSON Web Jetonları gibi ), diğerleri ise AS'de sunucu tarafında tutulan bilgilere referans verdikleri için bir oturum çerezine benzeyebilir.
Olmamıştır bazı tartışmalar bir RS AT doğrulama için AS ile iletişim kurmak için standart bir yol oluşturma hakkında OAuth Çalışma Grubu. Şirketim (Ping Kimliği) ticari OAuth AS (PingFederate) için böyle bir yaklaşım ortaya koydu: https://support.pingidentity.com/s/document-item?bundleId=pingfederate-93&topicId=lzn1564003025072.html#lzn1564003025072__section_N10578_N1002A_N10001 . Bunun için OAuth 2.0'ı tamamlayıcı olan REST tabanlı etkileşim kullanır.
Google Oauth2 Jetonu Doğrulaması
İstek:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg
Cevap vermek:
{
"audience":"8819981768.apps.googleusercontent.com",
"user_id":"123456789",
"scope":"https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
"expires_in":436
}
Microsoft - Oauth2 yetkilendirmeyi kontrol et
Github - Oauth2 yetkilendirmeyi kontrol et
İstek:
GET /applications/:client_id/tokens/:access_token
Cevap vermek:
{
"id": 1,
"url": "https://api.github.com/authorizations/1",
"scopes": [
"public_repo"
],
"token": "abc123",
"app": {
"url": "http://my-github-app.com",
"name": "my github app",
"client_id": "abcde12345fghij67890"
},
"note": "optional note",
"note_url": "http://optional/note/url",
"updated_at": "2011-09-06T20:39:23Z",
"created_at": "2011-09-06T17:26:27Z",
"user": {
"login": "octocat",
"id": 1,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "somehexcode",
"url": "https://api.github.com/users/octocat"
}
}
Amazon ile Giriş - Geliştirici Kılavuzu (Aralık 2015, sayfa 21)
İstek :
https://api.amazon.com/auth/O2/tokeninfo?access_token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR...
Tepki :
HTTP/l.l 200 OK
Date: Fri, 3l May 20l3 23:22:l0 GMT
x-amzn-RequestId: eb5be423-ca48-lle2-84ad-5775f45l4b09
Content-Type: application/json
Content-Length: 247
{
"iss":"https://www.amazon.com",
"user_id": "amznl.account.K2LI23KL2LK2",
"aud": "amznl.oa2-client.ASFWDFBRN",
"app_id": "amznl.application.436457DFHDH",
"exp": 3597,
"iat": l3ll280970
}
@Scott T.'nin cevabı hakkında bir güncelleme: Kaynak Sunucusu ile token doğrulaması için Yetkilendirme Sunucusu arasındaki arayüz Ekim 2015'te IETF RFC 7662'de standartlaştırılmıştır, bkz: https://tools.ietf.org/html/rfc7662 . Örnek bir doğrulama çağrısı şöyle görünecektir:
POST /introspect HTTP/1.1
Host: server.example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer 23410913-abewfq.123483
token=2YotnFZFEjr1zCsicMWpAA
ve örnek bir yanıt:
HTTP/1.1 200 OK
Content-Type: application/json
{
"active": true,
"client_id": "l238j323ds-23ij4",
"username": "jdoe",
"scope": "read write dolphin",
"sub": "Z5O3upPC88QrAjx00dis",
"aud": "https://protected.example.net/resource",
"iss": "https://server.example.com/",
"exp": 1419356238,
"iat": 1419350238,
"extension_field": "twenty-seven"
}
Tabii ki satıcılar ve ürünler tarafından benimsenmesi zaman içinde gerçekleşmelidir.
scope
; değeri boşlukla ayrılmış kapsam listesi içeren bir sorgu parametresiyle
OAuth 2.0 spec parçayı tanımlamaz. Ancak birkaç seçenek olabilir:
Kaynak sunucu belirteci Authz Üstbilgisinde aldığında, belirteci doğrulamak için Authz sunucusundaki validate / introspect API'sini çağırır. Burada Authz sunucusu DB Mağazası'nı kullanarak veya imzayı ve belirli öznitelikleri doğrulayarak doğrulayabilir. Yanıtın bir parçası olarak, jetonun kodunu çözer ve jetonun gerçek verilerini kalan süre bitimiyle birlikte gönderir.
Authz Server özel anahtarı kullanarak jetonu şifreleyebilir / imzalayabilir ve ardından Kaynak Sunucu'ya publickey / cert verilebilir. Kaynak sunucu belirteci aldığında, belirteci doğrulamak için imzanın şifresini çözer / doğrular. İçeriği çıkarır ve jetonu işler. Daha sonra erişim sağlayabilir veya reddedebilir.
OAuth v2 özellikleri şunları gösterir:
Erişim belirteci öznitelikleri ve korunan kaynaklara erişmek için kullanılan yöntemler bu belirtimin kapsamı dışındadır ve tamamlayıcı belirtimlerle tanımlanır.
Yetkilendirme Sunucum, Kaynak Sunucunun access_token değerinin geçerli olup olmadığını bilmesini sağlayan bir web hizmeti (SOAP) uç noktasına sahip.