2016-01-13 37 views
15

OAuth2 iş akışını Azure AD için doğru şekilde gerçekleştirmesi için çalışıyorum. https://login.microsoftonline.com/[app-endpoint-id]/oauth2/authorize?response_type=code&client_id=[client-id]&redirect_uri=[redirect-uri]OAuth2, Azure AD ile - Kullanıcı onayı alınmıyor

Sonra şöyle bir http sonrası bir erişim belirteci istemek için yetkilendirme kodu kullanın: https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx

başarıyla bu isteği kullanarak bir yetkilendirme kodu yanıtını alabilirsiniz: Bu kaynaktaki yönergeleri takip ediyorum (Bu kullanarak Postacı test ediyorum):

SONRASI/[uygulama-son nokta-numarası]/OAuth2/anahtarı HTTP/1.1 Ana: login.microsoftonline.com Cache-Control: no-cache Postacı-simgesi: ed098281-9aa4-6e5f-915d-0253d9a876d3 İçerik Türü: applicati/'x-www-form-urlencoded

grant_type = authorization_code & client_id = [istemci numarası] & kod = [authorization_code] & redirect_uri = [redirect_uri] & client_secret = [istemci gizli] & kaynak = [app url]

POST isteğinde şu hata iletisini alıyorum: {"error": "invalid_grant", "error_description": "AADSTS65001: Kullanıcı veya yönetici kimliği olan uygulamayı uygulamayı kabul etmedi. İD'. Bu kullanıcı ve kaynak için etkileşimli bir yetkilendirme isteği gönderin. \ R \ nTrace ID: trace-di \ r \ nCorrelation ID: correlation-id \ r \ nTimestamp: 2016-01-13 17: 18: 39Z "," error_codes ": [65001], "timestamp": "2016-01-13 17: 18: 39Z", "trace_id": "trace-id", "correlation_id": "korelasyon-kimliği"}

Önbelleğimi temizlerseniz ve yetkilendirme kodu için ilk istekte bulunacağım. Giriş yapmak için yeniden yönlendirileceğim. Ancak, bu belgede belirtildiği gibi oturum açtıktan sonra herhangi bir yollamıyorum. Bu belgede yazmam gerektiği gibi:

// azure. microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/

Burada yanlış olan ne yapıyorum? erişim belirteci.

+0

Özellikle ne yapmaya çalışıyorsunuz? Yani, hangi dilde AAD veya mobil uygulama ile çalışan bir WebAPI uygulaması almaya çalışıyorsunuz? – theadriangreen

+0

Java'da AAD ile çalışan bir WebAPI uygulaması almaya çalışıyorum. – Spensaur

+0

Aynı sorunla karşı karşıyayım ama PHP kullanıyorum. –

cevap

9

Çalışmakta olduğunuz sorun, uygulamanıza erişmek için kullanmakta olduğunuz kiracının uygulamanızı desteklenen uygulamaların listesine eklememesidir. Etkileşimli akışını yönetici olarak kullanmanı söylüyor.

1) İlk olarak, kiracı yönetici uygulamasını onaylamalıdır:

Rıza, iki aşamalı bir işlemdir. Bu, 1) uygulamayı kullanmak isteyen kiracının Azure portalında veya 2) uygulamayı başlatıp uygulamayı açtığınızda uygulamaya karşı yönetici kimlik bilgilerini kullanarak yapılabilir.

Azure portal onayı örneği:

2) İkinci olarak, herhangi ek kullanıcı (yönetici olmayan) yönetici uygulaması kullanılabileceğini razı sonra uygulamanın ilk kez kullanırken kendi bireysel bilgi için rıza terfi edilecektir.

+0

Teşekkürler! Bir sebepten dolayı yönetici olduğum izlenimindeydim çünkü uygulamaları yarattım ama mesajın benim olmadığımı fark etmemi sağladı. Sorumluluğumun gönderilmesinden önce kiracı uygulamasının Azure portalında zaten yetki verilmiş izinler verdim. Bu da bana yönetici izinleri verdiğime inanmamı sağladı. – Spensaur

+3

Güncellemesi - Bir yönetici hesabıyla oturum açabildim ve onay için uyarıldım. Daha sonra bir erişim belirteci aldım. Aynı yönetici hesabıyla Azure portalı üzerindeki izinleri kontrol ettim ve kiracının izin aldığından emin oldum. Ancak, yönetici olmayan bir kullanıcıyla bir erişim belirteci almaya çalışırken aynı hatayla karşılaşıyorum. Hayır olarak ayarlanmış Kullanıcı atamam var. Ama yine de kullanıcı hesabımı atadım. Oturum açtıktan sonra yönetici olmayan bir kullanıcı için izin istemi almak için özel bir şey yapmam gerekiyor mu? – Spensaur

+0

Kendi olmayan bir yönetici olmayan kullanıcı hesabı denediğimde. Aşağıdaki iletiyi alıyorum: Üzgünüm, ancak sizi oturum açmada sorun yaşıyoruz. Kötü bir istek aldık. Ek teknik bilgiler: AADSTS90093: Bu işlem yalnızca bir yönetici tarafından gerçekleştirilebilir. Çıkış yapın ve yönetici olarak oturum açın veya kuruluşunuzun yöneticilerinden birine başvurun. – Spensaur

2

İstekte 'https://graph.windows.net' olarak kaynak belirtmeyi deneyin.

Benim için çalıştı.

+1

Bu çalışır. Güvenli bir API'nın, https://stackoverflow.com/questions/44466189/oauth2-resource-owner-password-grant-via-api/44539932#44539932 adresine göre graph.windows.net'i içerecek şekilde yapılandırılmış İzin Verilen Kitleler için gerekli olduğunu unutmayın. – Sentinel