亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

EPIC FHIR 智能后端服務: { “錯誤”: “invalid_client” }

EPIC FHIR 智能后端服務: { “錯誤”: “invalid_client” }

Go
白衣染霜花 2022-09-26 20:29:43
我正在嘗試在移動編程語言上實現EPIC FHIR智能后端服務(后端OAuth 2.0)。我已經創建了我的開發人員帳戶,在那里上傳了公鑰,并選擇 作為應用程序受眾。backend system我很確定我的jwt令牌是正確的。我已經檢查過它 jwt.io,簽名是正確的。但是,我總是收到此錯誤:{ “錯誤”: “invalid_client”,“error_description”: 空 }我也嘗試了其他可能的解決方案,例如:確保噴氣式飛機索賠內的到期日低于5分鐘將有效負載放置在具有正確內容類型的正文中,即application/x-www-form-urlencoded確保使用沙盒client_id使用正確的 jwt 登錄方法 (RS384)我應該怎么做才能解決此問題?順便說一句,我還在Google組上看到了幾個討論,說在創建開發帳戶后等待一兩天是值得的。以下是我的代碼。感謝您的幫助!var (    oauth2TokenUrl  = "https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token"    sandboxClientID = "..."    privateKey      = "...")// load private keysignKey, err := jwt.ParseRSAPrivateKeyFromPEM([]byte(privateKey))So(err, ShouldBeNil)// construct jwt claimsnow := time.Now()claims := jwt.MapClaims{    "iss": sandboxClientID,    "sub": sandboxClientID,    "aud": oauth2TokenUrl,    "jti": uuid.New().String(),             // fill with reference id    "exp": now.Add(1 * time.Minute).Unix(), // cannot be more than 5 minutes!}log.Info("  => claims:", utility.ToJsonString(claims))// generate signed token using private key with RS384 algorithmalg := jwt.SigningMethodRS384signedToken, err := jwt.NewWithClaims(alg, claims).SignedString(signKey)So(err, ShouldBeNil)log.Info("  => signed token", signedToken)// prepare api call payloadpayload := map[string]string{    "grant_type":            "client_credentials",    "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",    "client_assertion":      signedToken,}// dispatch the api callreq := resty.New().    R().    EnableTrace().    SetFormData(payload)res, err := req.Post(oauth2TokenUrl)So(err, ShouldBeNil)log.Info("  => response status:", res.StatusCode())log.Info("  => response header:", res.Header())log.Info("  => response body:", string(res.Body()))// parse responseresBody := make(map[string]interface{})err = json.Unmarshal(res.Body(), &resBody)So(err, ShouldBeNil)
查看完整描述

3 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

太棒了,我現在讓它工作了。

解決方案只是在等待!這令人困惑,因為我在文檔上找不到有關此內容的任何解釋,并且錯誤消息也不是用戶友好的。

總而言之,在創建開發應用并將公鑰上傳到那里之后,我們必須等待幾個小時/幾天,然后憑據最終將可用。

等待部分適用于打開的長篇故事應用果園開發帳戶。


查看完整回答
反對 回復 2022-09-26
?
MM們

TA貢獻1886條經驗 獲得超2個贊

似乎Epic有某種同步機制,每天運行一次。因此,在帳戶創建后等待是唯一的解決方案。另請注意,在更改后的應用程序設置中,您還必須等待一段時間。Endpoint URI

當參數設置為類似時,也會顯示錯誤。{ "error": "invalid_client", "error_description": null }redirect_urilocalhost:3000


查看完整回答
反對 回復 2022-09-26
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

我也遇到了這個問題。就我而言,我使用“患者”作為為FHIR上的Epic SMART應用程序選擇的“應用程序受眾”。我能夠在測試服務器上成功獲取授權代碼,但是當我嘗試將其交換為訪問令牌時,我收到“invalid_client”錯誤消息。


我犯的錯誤是,HTTP POST 中的redirect_uri必須是絕對 URL,并且必須與為應用指定的重定向 URI 匹配。如果重定向 URI 無效,則生成的錯誤消息將顯示“客戶端無效”(具有誤導性)。


以下是我正在使用的Python代碼的示例...


    data = {

        'grant_type': 'authorization_code',

        'code': request.GET.get('code'),

        'redirect_uri': 'http://127.0.0.1:8000/ehr_connection_complete/', # THIS MUST BE AN ABSOLUTE URL

        'client_id': '11111111-2222-3333-4444-555555555555',

    }

    response = post(url, data)

我覺得很奇怪的是,參數的錯誤會生成一條關于 的錯誤消息,但對于Epic的測試FHIR服務器來說也是如此。redirect_uriinvalid_client


我希望這些信息能幫助其他人。


查看完整回答
反對 回復 2022-09-26
  • 3 回答
  • 0 關注
  • 223 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號