Единая регистрация поддерживается только через поток грантов OAuth 2.0 с кодом авторизации, который предоставит пользователю окно входа в систему с кнопкой SSO, которая перенаправит пользователя на веб-сайт SAML Identity Provider (IdP) для аутентификации на основе SSO.
Демонстрационный код для того, как сделать это с помощью двух C # SDK, доступен здесь:
https://github.com/ringcentral/ringcentral-demos-oauth/tree/master/csharp-nancy
Вот выдержка, показывающая две конечные точки для домашней страницы и OAuthURI перенаправления:
public DefaultModule()
{
var authorizeUri = rc.AuthorizeUri(Config.Instance.RedirectUrl, MyState);
var template = File.ReadAllText("index.html");
Get["/"] = _ =>
{
var tokenJson = "";
var authData = rc.token;
if (rc.token != null && rc.token.access_token != null)
{
tokenJson = JsonConvert.SerializeObject(rc.token, Formatting.Indented);
}
var page = Engine.Razor.RunCompile(template, "templateKey", null,
new { authorize_uri = authorizeUri, redirect_uri = Config.Instance.RedirectUrl, token_json = tokenJson });
return page;
};
Get["/callback"] = _ =>
{
var authCode = Request.Query.code.Value;
rc.Authorize(authCode, Config.Instance.RedirectUrl);
return ""; // js will close this window and reload parent window
};