Microsoft Information Protection SDK: используя имя пользователя / пароль для входа - PullRequest
0 голосов
/ 24 февраля 2019

Я создаю POC-приложение, используя новый MIP SDK на C #.Одним из требований является использование имени пользователя / пароля, хранящихся на сервере.Все примеры приложений используют вход в OAuth2 с всплывающим окном для ввода учетных данных пользователя.Я считаю, что правильная реализация IAuthDelegate может помочь, но встроенная документация не сильно помогла.в моем методе init двигателя я следую примеру SDK

            var authDelegate = new AuthDelegateImplementation(appInfo);

            //Initialize and instantiate the File Profile
            //Create the FileProfileSettings object
            var profileSettings = new FileProfileSettings(
                path: "mip_data", 
                useInMemoryStorage: true, 
                authDelegate: authDelegate,
                consentDelegate: new ConsentDelegateImplementation(), 
                applicationInfo: appInfo, 
                minimumLogLevel: LogLevel.Trace);

            Console.WriteLine("Load the Profile async and wait for the result");
            var fileProfile = Task.Run(async () => await MIP.LoadFileProfileAsync(profileSettings)).Result;

и AuthDelegateImplementation, имеющему следующий код

public string AcquireToken(Identity identity, string authority, string resource)
    {
        AuthenticationContext authContext = new AuthenticationContext(authority);
        AuthenticationResult result = authContext.AcquireTokenAsync(
                                        resource: resource, 
                                        clientId: _appInfo.ApplicationId, 
                                        redirectUri: new Uri(redirectUri), 
                                        parameters: new PlatformParameters(PromptBehavior.Auto, null), 
                                        userId: UserIdentifier.AnyUser).Result;
        return result.AccessToken;
    }

Спасибо за вашу помощь, C.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Как правило, MIP SDK не заботится о вашем логине - ему просто нужно знать ваш токен аутентификации, используя обратный вызов IAuthDelegate.

Вы можете и должны использовать ADAL .Net. для входа в систему с именем пользователя и паролем.Вы можете использовать пример .Net, чтобы найти, как это сделать

0 голосов
/ 04 марта 2019

Ну, по-видимому, нет способа MIP SDK войти в систему, используя имя пользователя / пароль.Однако я смог взломать свой путь, используя другой API Azure.Я отправляю вызов REST в Azure REST для получения доступа и обновления токенов.Запрос отправлен из реализации IAuthDelegate.Ваша реализация метода IAuthDelegate :: AcquireToken отправит вызов REST и вернет токен доступа (строка).Структура запроса на вход в систему выглядит следующим образом:

...
client.BaseAddress = new Uri(String.Format("https://login.microsoftonline.com/{0}/oauth2/token", tenantId));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
...
string postBody = string.Format(
                        "grant_type=password&" +
                        "resource=https://psor.o365syncservice.com&" +
                        "username={0}&" +
                        "password={1}&" +
                        "client_id={2}", credentialsIdentity.Username, credentialsIdentity.Password, _appInfo.ApplicationId);

структура ответа такова:

   public class LoginResponse
    {
        public string token_type { get; set; }
        public string scope { get; set; }
        public string expires_in { get; set; }
        public string ext_expires_in { get; set; }
        public string expires_on { get; set; }
        public string not_before { get; set; }
        public string resource { get; set; }
        public string access_token { get; set; }
        public string refresh_token { get; set; }
    }

Надеюсь, это поможет кому-то в будущем.

...