Azure AD B2C授权代码流

时间:2016-12-06 08:10:25

标签: oauth-2.0 httpwebrequest azure-active-directory httpwebresponse

我构建了具有asp.net核心web api作为后端的xamarin移动应用程序,我想使用oauth2.0授权代码流来保护它。

使用此文档 - https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oauth-code#1-get-an-authorization-code

我试图获取授权码。我发送请求到https://login.microsoftonline.com/ {tenant_domain_name} /oauth2/v2.0/authorize?带有查询参数的端点:

client_id - id of added application to azure ad b2c 
response_type=code 
redirect_uri=redirect url for native application from added application to azure ad b2c 
response_mode=query 
scope=client id value and "offline_access" separated by whitespace state=test_0001 
p=B2C_1_CommonLogin - sign in policy for local accounts

从响应中我得到html页面以字符串形式登录。我解析登录页面字符串以获取ctx,flowToken和canary标记以向https://login.microsoftonline.com/ {tenant_domain_name} / login端点发送请求以获取授权代码。 要发布请求,我使用以下格式:

string postData = string.Format($@"login={email}&passwd={password}&ctx={ctx}&flowToken={flowToken}&canary={canary}&dssoToken=");
byte[] data = Encoding.UTF8.GetBytes(postData);

并将数据数组写入请求流。

然后我在请求对象上调用GetResponse并得到" Bad request"作为回应没有细节。 同样在HttpWebReponse对象中,我看到ResponseUrl指向: https://login.microsoftonline.com/te/ {tenant_domain_name} /的oauth2 / authresp? 并在查询中包含id_token,state和session_state参数。

你能提出什么建议吗?

1 个答案:

答案 0 :(得分:0)

您是否使用该代码模拟登录进度?输入用户名/密码以将其发布到Azure登录端点后,Azure AD应提供 302响应,这将在您传递请求时重定向URL。

您可以在位置标题中找到代码,然后您可以使用代码交换令牌作为上述文档。以下是您的参考成功回复: enter image description here

为了缩小问题的范围,我建议您使用Fiddler在broswer和caputer中尝试请求。