Содержание


Обеспечение входа через социальную сеть с помощью службы единого входа Bluemix

Создайте Node.js-приложение с применением Bluemix и службы единого входа

Comments

В этом руководстве показано, как сделать так, чтобы приложение IBM Bluemix принимало данные аутентификации пользователя из популярных социальных сетей, таких как Facebook, Google+, LinkedIn, и специальные объединенные удостоверения с помощью службы единого входа Bluemix Single Sign On (SSO). Служба Bluemix SSO обеспечивает необходимые механизмы для быстрого добавления проверки подлинности пользователей в Bluemix-приложения с помощью простых конфигураций на основе правил.

Изучив это руководство, вы сможете добавить и настроить службу единого входа в приложения IBM Bluemix, а также подключить источники идентификационных данных в соответствии со своими требованиями и потребностями пользователей.

Запустить приложениеПолучить код

Что требуется для создания приложения

Предварительные условия

Вам потребуются базовые знания в следующих областях:

  • HTML и программирование на JavaScript;
  • Node.js-программирование.

Вам также понадобятся:

Еще понадобятся учетные записи в социальных сетях, которые вы хотите использовать для проверки подлинности. Если их нет, зарегистрируйтесь и создайте эти учетные записи на соответствующих сайтах.

Необходимое программное обеспечение

Для создания схемы проверки подлинности SSO, описанной в этом руководстве, необходимо установить и настроить следующее ПО:

  • Java 7 Execution Environment;
  • Eclipse Luna для Java EE Developers (4.4.1);
  • IBM Eclipse Tools для Bluemix;
  • Node.js.

В этом руководстве используется операционная система Windows 7, и при использовании Mac- или Linux-системы графический интерфейс пользователя может отличаться от приведенных здесь рисунков. За исключением процедур установки для каждой платформы, эти различия несущественны.

Шаг 1. Создание Node.js-приложения в Bluemix

Сначала мы создадим простое Node.js-приложение в Bluemix.

  1. Откройте Eclipse и создайте новый проект Javascript: File > New > Project...
  2. В окне нового проекта введите javascript в поле Wizards, чтобы отфильтровать результаты.
  3. Выберите Javascript Project и нажмите кнопку Next.
  4. Введите имя проекта и нажмите кнопку Finish. На вопрос, хотите ли вы открыть эту перспективу, ответьте Yes.
  5. Щелкните правой кнопкой мыши на имени проекта и выберите Properties.
  6. Выберите Project Facets в левом столбце Properties окна <projectName> и нажмите кнопку Convert to faceted form... справа.
  7. Отметьте пункт Node.js Application и нажмите кнопку ОК.

Структура проекта изменится. Теперь проект содержит ресурсы JavaScript, а также файлы app.js и package.json.

Когда проект Node.js готов, приложение можно развернуть в Bluemix.

Шаг 2. Определение нового сервера

  1. Если вкладка Servers не видна, выберите Window > Show view > Other.... Затем выберите Servers и нажмите кнопку ОК.
  2. Щелкните правой кнопкой мыши в пустой области и выберите New > Server.
  3. В разделе IBM выберите IBM Bluemix.
  4. Нажмите кнопку Next.
  5. Введите данные учетной записи Bluemix.
  6. Нажмите кнопку Next.
  7. Выберите свое значение Organizations and Spaces. Значение по умолчанию — dev.
  8. Нажмите кнопку Next.
  9. Нажмите кнопку Finish.

Шаг 3. Развертывание приложения

  1. Откройте вкладку Servers и щелкните правой кнопкой мыши на запущенном сервере Bluemix. Выберите Add и Remove.
  2. Слева выберите свой проект и нажмите кнопку Add.
  3. Нажмите кнопку Finish. Откроется окно Application Details.
  4. Введите имя приложения и нажмите кнопку Next.
  5. По умолчанию устанавливается значение Launch Deployment. Нажмите кнопку Finish.

Чтобы увидеть, как работает ваше приложение после его переноса в Bluemix, щелкните правой кнопкой мыши на проекте на том же сервере и нажмите кнопку Open Home Page. На открывшейся вкладке браузера вы увидите работающее приложение и сообщение: Generated Node.js application that runs on IBM Bluemix (Сгенерировано приложение Node.js, работающее в IBM Bluemix). Когда откроется главная страница, вы увидите URL-адрес своего приложения в строке адреса браузера на вкладке веб-браузера.

Приложение развернуто и работает в Bluemix. Осталось создать службу единого входа, настроить ее и привязать к приложению.

Шаг 4. Создание службы единого входа

  1. Войдите в Bluemix.
  2. Найдите Services и нажмите кнопку ADD A SERVICE.
  3. Найдите категорию Security и нажмите кнопку Single Sign-On. Результаты можно отфильтровать, набрав имя службы в поле ввода ключевых слов.
  4. В поле App нажмите кнопку Leave unbound, чтобы создать только службу.
  5. В поле Service отображается имя службы по умолчанию. Вы можете использовать это имя или изменить его.
  6. Выберите Standard plan и нажмите кнопку CREATE.
  7. После создания службы откроется экран приветствия, где нужно ввести имя службы. Введите имя и нажмите кнопку Continue.

Вы увидите страницу настройки единого входа, где можно выбрать поставщика услуг и добавить один или несколько доступных источников идентификационных данных, таких как SAML Enterprise, Cloud Directory и популярные социальные сети – LinkedIn, Facebook или Google+.

Шаг 5. Настройка службы единого входа

В ходе этой процедуры необходимо настроить источники идентификационных данных Cloud Directory, LinkedIn, Facebook и Google+.

Добавление источника идентификационных данных Cloud Directory

Источник идентификационных данных Cloud Directory использует реестр, размещаемый в облаке Cloud. В Cloud Directory находятся правила создания паролей и информация о пользователях источника идентификационных данных.

Прежде чем пользователи смогут получить доступ к приложению, их учетные записи должны быть добавлены в реестр Cloud Directory. Вам нужно будет заполнить реестр с информацией о пользователях. Можно также настроить правила создания паролей, которые будут применяться при входе в приложение.

  1. Выберите Cloud Directory из меню Add New Identity Source.
  2. Отображается имя источника идентификационных данных по умолчанию. Вы можете использовать это имя или изменить его. Нажмите кнопку Save.
  3. Вы возвратитесь на страницу настройки единого входа. В качестве источника идентификационных данных по умолчанию будет включен Cloud Directory.
  4. Щелкните на имени источника идентификационных данных, чтобы выбрать его из списка.
  5. Добавьте нового пользователя, щелкнув на знак «плюс» ( значок со знаком плюс). Заполните поля сведений о пользователе. Чтобы изменить, удалить, или заблокировать пользователя, выберите его и щелкните на соответствующем значке.
  6. Нажмите кнопку Save, чтобы добавить пользователя в Cloud Directory. В списке зарегистрированных пользователей вы увидите информацию, введенную на предыдущем шаге.
  7. Проверьте параметры настройки, нажав кнопку настройки ( ). Проверьте состояние параметра автоматического согласования Auto Consent. Когда Auto Consent находится в состоянии On, приложение может извлекать идентификационные данные пользователя, не спрашивая его согласия. Выключите этот параметр, чтобы запрашивать согласие пользователя перед получением идентификационных данных.
  8. Нажмите кнопку Save, чтобы сохранить значение параметра Auto Consent.

Служба единого входа готова к подключению к приложению и использованию. Однако прежде чем проверить это, заполните остальные источники идентификационных данных.

Добавление социальной сети LinkedIn в качестве источника идентификационных данных

  1. Выберите LinkedIn на странице Add New Identity Source.
  2. Отображается имя источника идентификационных данных по умолчанию. Вы можете использовать это имя или изменить его.
  3. В разделе Step 1 выберите Click here, чтобы перейти на сайт LinkedIn Developer. Настройка источника идентификационных данных
    Настройка источника идентификационных данных
  4. В веб-браузере откроется новая вкладка со страницей LinkedIn Secure Developer. Войдите (нужно зарегистрироваться). Затем щелкните на значке + Add New Application.
  5. Заполните необходимые поля и найдите OAuth 2.0 Redirect URLs в разделе OAuth User Agreement.
  6. Вернитесь на страницу Bluemix.
  7. В разделе Configured Identity Source скопируйте в системный буфер обмена значение OAuth Redirect URI.
  8. Вернитесь на страницу LinkedIn Secure Developer и вставьте значение OAuth Redirect URI в поле OAuth 2.0 Redirect URLs. Настройка LinkedIn
    Настройка LinkedIn
  9. Заполнив обязательные поля, согласитесь с условиями использования и нажмите кнопку Add Application.
  10. Отобразится местоположение значений API Key и Secret Key. Скопируйте эти значения.
  11. Вернитесь на страницу Bluemix и вставьте значения API Key и Secret Key в соответствующие поля раздела Step 2 на странице Configure Identity Source LinkedIn.
  12. Нажмите кнопку Save на странице Bluemix, чтобы сохранить настройки источника идентификационных данных LinkedIn.
  13. Вернитесь на страницу LinkedIn Secure Developer и нажмите кнопку Done.

Добавление социальной сети Facebook в качестве источника идентификационных данных

Процесс добавления Facebook очень похож на процесс добавления LinkedIn.

  1. Выберите Facebook на странице Add New Identity Source.
  2. Отображается имя источника идентификационных данных по умолчанию. Вы можете использовать это имя или изменить его.
  3. В разделе Step 1 выберите Click here, чтобы перейти на сайт Facebook Developer.
  4. В веб-браузере откроется новая вкладка со страницей Facebook Developer. Войдите (нужно зарегистрироваться).
  5. Найдите меню My Apps и выберите подменю Add a New App.
  6. Выберите Website.
  7. Введите имя приложения и нажмите кнопку Create New Facebook App ID.
  8. На вопрос, не тестовая ли это версия другого приложения, ответьте NO.
  9. Выберите Category и нажмите кнопку Create App ID.
  10. Когда появится страница Quick Start, заполните поля Site URL и Mobile Site URL. Второе поле можно оставить пустым или использовать то же значение, что и для первого. Нажмите кнопку Next.
  11. Перейдите в меню My Apps и выберите недавно созданное приложение.
  12. Выберите меню Settings, расположенное в левой части страницы.
  13. Введите в поле Contact Email адрес электронной почты и нажмите кнопку Save Changes.
  14. Выберите вкладку Advanced.
  15. Найдите раздел OAuth и включите Client OAuth Login, нажав кнопку No, чтобы изменить значение параметра на Yes.
  16. На странице Configured Identity Source Facebook в Bluemix скопируйте значение OAuth Redirect URI.
  17. Вставьте его в поле Valid OAuth redirect URIs в нижней части страницы Facebook Developer. Настройка OAuth Redirect
    Настройка OAuth Redirect
  18. Нажмите кнопку Save Changes. При необходимости заполните остальные обязательные поля.
  19. Вернитесь на вкладку Basic Facebook. Скопируйте значения App ID и App Secret. (Чтобы увидеть App Secret, нажмите кнопку Show. Если потребуется, введите свой пароль Facebook.)
  20. На странице Configure Identity Source Facebook в Bluemix вставьте значения App ID и App Secret.
  21. Нажмите кнопку Save на странице Bluemix, чтобы сохранить изменения.
  22. Вернитесь на страницу Facebook Developer и выберите из меню в левой части страницы Status & Review.
  23. На вкладке Status нажмите кнопку NO, чтобы сделать приложение общедоступным. Вкладка Status
    Вкладка Status
  24. Нажмите кнопку Confirm.

Теперь служба единого входа Facebook готова к использованию.

Добавление социальной сети Google+ в качестве источника идентификационных данных

  1. На странице Add New Identity Source выберите Google+.
  2. Отображается имя источника идентификационных данных по умолчанию. Вы можете использовать это имя или изменить его.
  3. В разделе Step 1 выберите Click here, чтобы перейти на сайт Google Developer.
  4. В веб-браузере откроется новая вкладка со страницей Google Developer. Войдите (нужно зарегистрироваться).
  5. Нажмите кнопку Create Project.
  6. Выберите имя приложения и нажмите кнопку Create.
  7. После создания проекта отображается его панель управления. В левой части выберите APIs & auth и нажмите кнопку APIs.
  8. Нажмите кнопку Google+ API, расположенную в разделе Social APIs.
  9. Нажмите кнопку Enable API.
  10. В левой части страницы выберите APIs, нажмите кнопку Credentials, затем кнопку Create new Client ID.
  11. Выберите тип Web application и нажмите кнопку Configure consent screen.
  12. На экране Consent заполните поле Product Name. Остальные поля заполнять необязательно.
  13. Нажмите кнопку Save, чтобы сохранить имя продукта. Появится всплывающее окно. Убедитесь, что выбрано Web Application.
  14. В поле AUTHORIZED JAVASCRIPT ORIGINS введите URL-путь своего приложения Bluemix.
  15. Вернитесь на страницу Google Identity в Bluemix. Скопируйте OAuth Redirect URI в разделе Step 1.
  16. Вставьте значение OAuth Redirect URI в поле AUTHORIZED REDIRECT URIS на странице Google Developer.
  17. Убедитесь в правильности введенных значений. Страница должна выглядеть так, как показано ниже. Если все правильно, нажмите кнопку Create Client ID. Настройка authorized redirect uri
    Настройка authorized redirect uri
  18. Появятся сведения о веб-приложении. Скопируйте значения Client ID и Client Secret.
  19. Вставьте их на панель Step 2 страницы Configured Identity Source Google+ в Bluemix.
  20. Нажмите кнопку Save.

На этом настройка службы единого входа окончена. На следующем шаге нужно привязать приложение к этой службе.

Шаг 6. Привязка службы SSO к приложению

  1. Войдите в IBM Bluemix и выберите созданное ранее приложение.
  2. На обзорном экране приложения выберите BIND A SERVICE OR API.
  3. Выберите из списка службу единого входа и нажмите кнопку ADD.
  4. Нажмите кнопку RESTAGE.
  5. Служба добавится на экран Overview в виде большой кнопки. Нажмите ее.
  6. Появится страница настройки единого входа с ранее настроенными источниками идентификационных данных. Выберите вкладку INTEGRATE.
  7. Введите URL-адрес обратного вызова, откуда вы будете получать маркеры аутентификации и извлекать профили пользователей. Рекомендуется после URL своего приложения использовать путь типа /auth/sso/callback. Например, полный URL-адрес может выглядеть так: http://appname.mybluemix.net/auth/sso/callback
  8. Введите отображаемое имя приложения.
  9. Проверьте источники идентификационных данных, которые должны быть доступны в вашем приложении.
  10. Нажмите кнопку Save.
  11. Теперь приложение привязано к службе. Но прежде чем приступить к кодированию, необходимо выполнить дополнительный шаг. Так как это Node.js-приложение, необходимо загрузить модуль и извлечь его содержимое в специальный каталог.
    1. Выберите ссылку Click here рядом с кнопкой Save, чтобы загрузить модуль Node.js.
    2. В Eclipse, когда открыт ваш проект, щелкните правой кнопкой мыши на имени проекта и выберите Show In > System Explorer. В папке проекта найдите каталог приложения node_modules. Если его не существует, создайте этот каталог.
    3. Распакуйте содержимое модуля Node.js, загруженного на шаге а.
    4. Вернитесь в Eclipse, выберите папку проекта в Project Explorer и нажмите клавишу F5, чтобы обновить ее содержание и увидеть изменения, внесенные в проект.

Шаг 7. Настройка Node.js-приложения

Чтобы использовать приложение со службой единого входа, необходимо внести в код некоторые изменения. Скопируйте проект IBM DevOps Services Single Sign On с помощью кнопки Получить код (см. выше), чтобы создать свою собственную копию приложения. Внесите следующие изменения.

  1. Добавьте в файл package.json следующие зависимости:
    • express,
    • passport,
    • body-parser,
    • cookie-parser,
    • express-session.

    Код должен выглядеть следующим образом:

    ... 
    "description": "Insert description here", 
        "dependencies": { 
            "express": "latest", 
            "passport": "latest", 
            "body-parser": "latest", 
            "cookie-parser": "latest", 
            "express-session": "latest" 
        }, 
        "scripts": { 
    ...
  2. Удалите все содержимое из файла app.js. Скопируйте следующий код и вставьте его в тот же файл. Этот код определяет переменные для использования модулей, добавленных на предыдущем шаге.
    var express = require('express'); 
    var passport = require('passport'); 
    var cookieParser = require('cookie-parser'); 
    var session = require('express-session'); 
    var OpenIDConnectStrategy = require('passport-idaas-openidconnect').IDaaSOIDCStrategy; 
    var app = express();
  3. Скопируйте следующий код и вставьте его после строки var app = express();. Этот код инициализирует использование модулей.
    app.use(cookieParser()); 
    app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true })); 
    app.use(passport.initialize()); 
    app.use(passport.session()); 
     
    passport.serializeUser(function(user, done) { 
       done(null, user); 
    }); 
     
    passport.deserializeUser(function(obj, done) { 
       done(null, obj); 
    });
  4. Следующий код получает все учетные данные служб, привязанных к приложению. Учетные данные содержатся в переменной VCAP_SERVICES и используются для определения и инициализации стратегии открытого ID для проверки подлинности пользователей в приложении. Скопируйте и вставьте следующий код за последней строкой своего файла app.js.
    var services = JSON.parse(process.env.VCAP_SERVICES || "{}"); 
    var ssoConfig = services.SingleSignOn[0]; 
    var client_id = ssoConfig.credentials.clientId; 
    var client_secret = ssoConfig.credentials.secret; 
    var authorization_url = ssoConfig.credentials.authorizationEndpointUrl; 
    var token_url = ssoConfig.credentials.tokenEndpointUrl; 
    var issuer_id = ssoConfig.credentials.issuerIdentifier; 
    var callback_url = 'PUT_CALLBACK_URL_HERE'; 
     
    var OpenIDConnectStrategy = require('passport-idaas-openidconnect').IDaaSOIDCStrategy; 
    var Strategy = new OpenIDConnectStrategy({ 
            authorizationURL : authorization_url, 
            tokenURL : token_url, 
            clientID : client_id, 
            scope: 'openid', 
            response_type: 'code', 
            clientSecret : client_secret, 
            callbackURL : callback_url, 
            skipUserProfile: true, 
            issuer: issuer_id 
        }, function(accessToken, refreshToken, profile, done) { 
            process.nextTick(function() { 
            profile.accessToken = accessToken; 
            profile.refreshToken = refreshToken; 
            done(null, profile); 
        }); 
    }); 
     
    passport.use(Strategy); 
    app.get('/login', passport.authenticate('openidconnect', {})); 
     
    function ensureAuthenticated(req, res, next) { 
        if(!req.isAuthenticated()) { 
            req.session.originalUrl = req.originalUrl; 
            res.redirect('/login'); 
        } else { 
            return next(); 
        } 
    }
  5. Найдите PUT_CALLBACK_URL_HERE в приведенном выше коде. Вставьте URL обратного вызова своего приложения.
  6. Напишите свой собственный код обратного вызова, чтобы указать, что должно делать приложение после входа пользователя в систему. В качестве примера можно использовать следующий код. Этот обратный вызов соответствует шаблону пути, определенному в пункте 7 раздела Шаг 6. Привязка службы SSO к приложению.
app.get('/auth/sso/callback', function(req, res, next) {                
    var redirect_url = req.session.originalUrl;                 
    passport.authenticate('openidconnect', { 
        successRedirect: '/hello',                                 
        failureRedirect: '/failure',                         
    })(req,res,next); 
});

В этом примере после того как пользователи успешно вошел в систему, он перенаправляется на страницу /hello.

app.get('/hello', ensureAuthenticated, function(request, response) { 
    request.send('Hello, '+ request.user['id'] + '!\n' + '<a href="/logout">Log Out</a>'); 
});

Обратный вызов ensureAuthenticated в предыдущем коде требует от неаутентифицированных пользователей войти через службу единого входа, а для пользователей, прошедших аутентификацию, отображает запрошенную страницу. Если при обращении к странице пользователь не аутентифицирован, он направляется на страницу входа. Если он аутентифицирован, отображается страница с сообщением Hello, <user_name> (где <user_name> заменяется именем из запроса) и ссылкой Log Out, которая перенаправляет его на страницу выхода, а та возвращает пользователя к главной странице.

app.get('/logout', function(req, res){ 
    req.logout(); 
    res.redirect('/'); 
});

Если попытка входа оказалась неудачной, пользователь направляется на страницу /failure, как показано в следующем коде, и отображается сообщение Login failed.

app.get('/failure', function(req, res) { 
    res.send('Login failed'); 
});

В приведенном выше примере, если пользователь успешно вошел в систему, он направляется на страницу /hello. Однако если нужно, чтобы пользователь направлялся по первоначально запрошенному пути, то в код следует внести небольшое изменение. В этом примере функция обратного вызова перенаправляет на страницу, первоначально запрошенную пользователем, с помощью параметра req.session.originalUri, в котором хранится путь к первоначально запрошенному ресурсу.

app.get('/auth/sso/callback',function(req,res,next) {  
 var redirect_url = req.session.originalUrl;  
 passport.authenticate('openidconnect', {  
 successRedirect: redirect_url,  
 failureRedirect: '/failure',  
 })(req,res,next); 
});
  1. Для каждой страницы, которая требует проверки подлинности, добавьте в функцию app.get обратный вызов ensureAuthenticated.
  2. Наконец, ниже приведен код для запуска приложения. Скопируйте его и вставьте за последней строкой кода в файле app.js, а затем сохраните изменения.
app.get('/', function (req, res) { 
    res.send('<h1>Bluemix Service: Single Sign On</h1>' + '<p>Sign In with a Social Identity Source (SIS): Cloud directory, Facebook, Google+ or LinkedIn.</p>' + '<a href="/auth/sso/callback">Sign In with a SIS</a>'); 
}); 
 
var appport = process.env.VCAP_APP_PORT || 8888; 
var host = (process.env.VCAP_APP_HOST || 'localhost'); 
var server = app.listen(appport, function () { 
    var host = server.address().address 
    var port = server.address().port 
    console.log('Example app listening at http://%s:%s', host, port); 
});

Шаг 8. Проверка приложения

  1. Выберите вкладку Servers и нажмите кнопку + рядом со значком сервера Bluemix, чтобы развернуть его содержание, если оно еще не развернуто.
  2. Щелкните правой кнопкой мыши на ранее созданном Node.js-приложении.
  3. Нажмите кнопку Update and Restart. Дождитесь, пока обновление завершится и приложение перезапустится. Чтобы увидеть ход выполнения, выберите вкладку Progress. Когда сообщение сменится на No operations to display at this time, работа завершена. Если вкладка Progress не видна, выберите Window > Show view > Other... > General > Progress.
  4. После перезапуска приложения щелкните правой кнопкой мыши на проекте в разделе Bluemix server на вкладкеServer. Нажмите кнопку Open Home Page.
  5. В Eclipse откроется новая вкладка с работающим в Bluemix приложением. приложение работает
    приложение работает
  6. Нажмите кнопку Sign In with a SIS.
  7. Откроется страница входа, где можно выбрать один из доступных источников идентификационных данных. Выберите любой из них, и выбранная служба перенаправит вас на свою страницу входа. службы единого входа
    службы единого входа
  8. Давайте проверим Facebook. Нажмите кнопку Sign in with Facebook. Откроется страница входа в Facebook.
  9. Войдите в свою учетную запись Facebook.
  10. Сообщение предупредит вас о том, что введенная информация будет передана запрашивающему приложению. Нажмите кнопку Okay.
  11. Теперь служба единого входа требует вашего согласия на разрешение доступа к вашей информации. Нажмите кнопку Allow.
  12. Наконец, вы увидите страницу hello с адресом электронной почты, использовавшимся для входа в систему.

    Примечание. Если адрес электронной почты не отображается, вы увидите текст между «Hello» и «! Log Out". Это нормально и может быть вызвано тем, что API популярного источника идентификационных данных изменился, а службе единого входа не в курсе этого изменения.

    страница приветствия
    страница приветствия
  13. Нажмите кнопку Log Out. Вы будете перенаправлены на главную страницу.

Процесс проверки других служб аналогичен.

Заключение

Из этого руководства вы узнали:

  • как создать Node.js-приложение и развернуть его в IBM Bluemix;
  • как создать службу единого входа, настроить ее и привязать к Node.js-приложению в IBM Bluemix;
  • как добавлять, настраивать и создавать учетные записи пользователей в источнике идентификационных данных Cloud Directory;
  • как добавить и настроить популярные источники идентификационных данных, такие как LinkedIn, Google+ и Facebook.

Теперь вы сможете добавить службу единого входа Bluemix IBM к своим собственным Node.js-приложениям и настроить ее. Вы сумеете подключить один или несколько источников идентификационных данных, и у ваших пользователей будет возможность выбрать, через какой из них входить в ваше приложение.

Пример исходного кода для этого руководства можно загрузить и поместить в JazzHub, чтобы внести изменения и адаптировать его в соответствии с требованиями своего приложения.


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Security, Web-архитектура, Облачные вычисления
ArticleID=1024729
ArticleTitle=Обеспечение входа через социальную сеть с помощью службы единого входа Bluemix
publish-date=12222015