只有通过授权码OAuth 2.0授权流才支持单点登录,授权码OAuth 2.0授权流将向用户显示一个带有SSO按钮的登录窗口,该按钮将用户重定向到SAML身份提供程序(IdP)网站,以进行基于SSO的身份验证。
下面提供了如何使用两个C#SDK实现这一点的演示代码:
https://github.com/ringcentral/ringcentral-demos-oauth/tree/master/csharp-nancy
以下摘录显示了homepage和OAuth重定向URI的两个端点:
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
};