Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
MIP SDK'sı, kimlik doğrulama sorunlarını işlemek ve belirteçle yanıt vermek için bir kimlik doğrulama temsilcisi uygular. Belirteç edinimini kendisi gerçekleştirmez. Belirteç alma süreci geliştiriciye bağlıdır ve mip::AuthDelegate sınıfını, özellikle AcquireOAuth2Token üye işlevini genişleterek gerçekleştirilir.
AuthDelegateImpl Oluşturma
temel sınıfını mip::AuthDelegategenişletmek için adlı sample::auth::AuthDelegateImplyeni bir sınıf oluştururuz. Bu sınıf AcquireOAuth2Token işlevselliğini uygular ve oluşturucuyu kimlik doğrulama parametrelerimizi alacak şekilde ayarlar.
auth_delegate_impl.h
Bu örnekte, varsayılan oluşturucu yalnızca kullanıcı adı, parola ve uygulamanın uygulama kimliğini kabul eder. Bunlar , mUserNameve mPasswordözel değişkenlerinde mClientIddepolanır.
Kimlik sağlayıcısı veya kaynak URI'si gibi bilgilerin, en azından AuthDelegateImpl oluşturucusunda uygulanmasının gerekli olmadığını unutmayın. Bu bilgiler nesnenin AcquireOAuth2TokenOAuth2Challenge bir parçası olarak geçirilir. Bunun yerine, bu ayrıntıları AcquireToken çağrısına AcquireOAuth2Token iletiriz.
//auth_delegate_impl.h
#include <string.h>
#include "mip/common_types.h"
namespace sample {
namespace auth {
class AuthDelegateImpl final : public mip::AuthDelegate { //extend mip::AuthDelegate base class
public:
AuthDelegateImpl() = delete;
//constructor accepts username, password, and mip::ApplicationInfo.
AuthDelegateImpl::AuthDelegateImpl(
const mip::ApplicationInfo& applicationInfo,
std::string& username,
const std::string& password)
: mApplicationInfo(applicationInfo),
mUserName(username),
mPassword(password) {
}
bool AcquireOAuth2Token(const mip::Identity& identity, const OAuth2Challenge& challenge, OAuth2Token& token) override;
private:
std::string mUserName;
std::string mPassword;
std::string mClientId;
mip::ApplicationInfo mApplicationInfo;
};
}
}
auth_delegate_impl.cpp
AcquireOAuth2Token , OAuth2 sağlayıcısına yapılan çağrının yapılacağı yerdir. Örnekte aşağıda iki AcquireToken() çağrısı vardır. Uygulamada yalnızca bir çağrı yapılır. Bu uygulamalar, Sonraki Adımlar altında sağlanan bölümlerde ele alınacaktır
//auth_delegate_impl.cpp
#include "auth_delegate_impl.h"
#include <stdexcept>
#include "auth.h" //contains the auth class used later for token acquisition
using std::runtime_error;
using std::string;
namespace sample {
namespace auth {
AuthDelegateImpl::AuthDelegateImpl(
const string& userName,
const string& password,
const string& clientId)
: mApplicationInfo(applicationInfo),
mUserName(userName),
mPassword(password) {
}
//Here we could simply add our token acquisition code to AcquireOAuth2Token
//Instead, that code is implemented in auth.h/cpp to demonstrate calling an external library
bool AuthDelegateImpl::AcquireOAuth2Token(
const mip::Identity& /*identity*/, //This won't be used
const OAuth2Challenge& challenge,
const OAuth2Token& token) {
//sample::auth::AcquireToken is the code where the token acquisition routine is implemented.
//AcquireToken() returns a string that contains the OAuth2 token.
//Simple example for getting hard coded token. Comment out if not used.
string accessToken = sample::auth::AcquireToken();
//Practical example for calling external OAuth2 library with provided authentication details.
string accessToken = sample::auth::AcquireToken(mUserName, mPassword, mApplicationInfo.applicationId, challenge.GetAuthority(), challenge.GetResource());
//set the passed in OAuth2Token value to the access token acquired by our provider
token.SetAccessToken(accessToken);
return true;
}
}
}
Sonraki Adımlar
Kimlik doğrulama uygulamasını tamamlamak için işlevin arkasındaki AcquireToken() kodun oluşturulması gerekir. Aşağıdaki örneklerde belirteci edinmenin birkaç yolu açıklanır.