WebRequests in C# OpenID Connect OAuth
WebRequests in C# OpenID Connect OAuth
我需要一个使用OpenID Connect/OAuth身份验证/授权访问外部API的示例,支持的OAuth流程是使用PKCE的授权码流。
终点使用基于HTTPS的REST技术。
我知道我首先必须获取授权码,然后请求认证令牌。
在以下URL中,他们有OpenID Connect:https://iam.efatura.cv/auth/realms/taxpayers/.well-known/openid-configuration。
我正在使用C#的WinForm。
我正在做这个,并且出现401错误。
尝试 {
string url5 = "https://iam.efatura.cv/auth/realms/taxpayers/protocol/openid-connect/token"; string client_id = ""; string client_secret = ""; HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url5); webRequest.PreAuthenticate = false; webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.Accept = "multipart/form-data"; webRequest.Headers.Add("Authorization:" + Authorization(client_id, client_secret)); var request = "grant_type=client_credentials"; byte[] req_bytes = Encoding.ASCII.GetBytes(request); webRequest.ContentLength = req_bytes.Length; Stream strm = webRequest.GetRequestStream(); strm.Write(req_bytes, 0, req_bytes.Length); strm.Close(); MessageBox.Show(webRequest.Headers.ToString()); HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse(); String json = ""; using (Stream respStr = resp.GetResponseStream()) { using (StreamReader rdr = new StreamReader(respStr, Encoding.UTF8)) { //应该返回一个字符串,我可以将其转换为JSON并解析出访问令牌 json = rdr.ReadToEnd(); rdr.Close(); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); }