我构建了具有asp.net核心web api作为后端的xamarin移动应用程序,我想使用oauth2.0授权代码流来保护它。
我试图获取授权码。我发送请求到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参数。
你能提出什么建议吗?