Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A MIP SDK egy hitelesítési delegáltat implementál a hitelesítési kihívások kezeléséhez és a jogkivonattal való válaszadáshoz. Önmagában nem implementálja a jogkivonat-beszerzést. A jogkivonat-beszerzési folyamat a fejlesztőn múlik, és az az osztály kibővítésével valósítható meg, különösen a mip::AuthDelegateAcquireOAuth2Token tagfüggvény kibővítésével.
Az AuthDelegateImpl létrehozása
Az alaposztály mip::AuthDelegatekibővítéséhez létrehozunk egy új, úgynevezett osztályt sample::auth::AuthDelegateImpl. Ez az osztály implementálja a AcquireOAuth2Token funkciót, és beállítja a konstruktort, hogy figyelembe vegye a hitelesítési paramétereket.
auth_delegate_impl.h
Ebben a példában az alapértelmezett konstruktor csak felhasználónevet, jelszót és az alkalmazás alkalmazásazonosítóját fogadja el. Ezek a magánváltozók mUserName, mPassword, és mClientId állapota lesz eltárolva.
Fontos megjegyezni, hogy az olyan információk, mint az identitásszolgáltató vagy az erőforrás URI nem szükségesek a implementáláshoz, legalábbis a AuthDelegateImpl konstruktorban nem. Az információ az AcquireOAuth2Token részeként az OAuth2Challenge objektumon keresztül lesz átadva. Ehelyett ezeket a részleteket átadjuk a AcquireToken hívásnak a AcquireOAuth2Token-ben.
//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 az OAuth2-szolgáltató hívásának helye. Az alábbi példában két hívás van AcquireToken()-ra. A gyakorlatban csak egy hívásra kerül sor. Ezekre a megvalósításokra a Következő lépések szakaszban található szakaszok vonatkoznak
//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;
}
}
}
Következő lépések
A hitelesítés végrehajtásához létre kell készíteni a függvény mögötti AcquireToken() kódot. Az alábbi példák a jogkivonat beszerzésének néhány módját ismertetik.