نحوه کار کردن با Guardian در فونیکس و میکروسرویس


#41

به جای Bearer از ApiTrangellWeb استفاده کردم مثل اینکه کار کرد


#42

درود خدمت سام عزیز آیا در کد جایی تغییر دادید ؟ من بجای Bearer می یام می زنم هنوز دچار مشکل هستم .

من درخواست می فرستم

 curl -H "Authorization: ApiTrangellWeb eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhcGlfdHJhbmdlbGwiLCJleHAiOjE1Nzk2MTIzODcsImlhdCI6MTUxOTczNzE4NywiaXNzIjoiYXBpX3RyYW5nZWxsIiwianRpIjoiMmNiZmI0NGQtM2Y1Yy00YzAzLWE5YWQtNmRjZjRmZmY3NjY0IiwibmJmIjoxNTE5NzM3MTg2LCJzb21lIjoiY2xhaW0iLCJzdWIiOiIxIiwidHlwIjoiYWNjZXNzIn0.1IXxsdB4DDoCkMPuHqy6YHD4eA63SNv6l4NXzYs9JXaskj7Kggkjg21C_T8N-gK9Vzy38Z--63nnZ__Zt2l65w" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost:4000/api/users/sign-out

هنوز ارور دارم


#43

: بگذار بعد ApiTrangelWeb


#45

منظور شما اینطوری هست

curl -H "Authorization: ApiTrangellWeb: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhcGlfdHJhbmdlbGwiLCJleHAiOjE1Nzk2MjQwMjYsImlhdCI6MTUxOTc0ODgyNiwiaXNzIjoiYXBpX3RyYW5nZWxsIiwianRpIjoiNWJiYmYwNDUtZWZlYy00ODE2LTlmOWQtOGQ4ODg0NTllNjgyIiwibmJmIjoxNTE5NzQ4ODI1LCJzb21lIjoiY2xhaW0iLCJzdWIiOiIxIiwidHlwIjoiYWNjZXNzIn0.TGtRlKIATAA9F8lt5EjZmUoCBUKZqR1xpyQSm6loPFiK4GEzMMRtwJB_IF6RHh79N1WHY6RyEzDMPY4Ry9Vurw -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost:4000/api/users/sign-out

هست ؟


#46

بله الان error
دیگه میده ولی دیگه از VerifyHeader نیست


#47

اینجوری ارسال می کنم ارور

{"message":"unauthenticated"}

من هر وقت اینجوری ارور می ده فکر می کنم برای این هست که دارم درخواست بد ارسال می کنم

این پست زحمت کشیدید ارسال کردید من امروز با چندین پست دیگه دیدم متاسفانه نتونستم ردیفش کنم .


#48

{“message”:“unauthenticated”}

امشب رسیدم خونه روی این error کار میکنم ببینم درست میشه یا نه error قبلی میگفت token درست نیست این یک error دیگه میده


#49

سام عزیز وقت کردید پست

من رو اگر بخونید ممنون می شم یک چندین سوال کلی کردم که یکمی متنش طولانی شد معذرت خواهی می کنم.

ممنونم ازت


#50

درود این دوستمون جواب داد ولی من مشکلم تغییر نکرد البته چندتا ارور ریز حل شد ولی ارور ۵۰۰ می گیره


#51

فکر نمیکنم ارور ۵۰۰ از auth باشه، احتمالا خطای رانتایم وجود داره


#52

درود توماج جان اومدم کل Bearer MYTOKEN رو بین دابل کتیشن گزاشتم ارور نمی ده و باز ارور توکن اینولید می ده

ولی کل ارور در کنسولم خیلی زیاد می شه ولی اینه

[error] #PID<0.1087.0> running ApiTrangellWeb.Endpoint terminated
Server: localhost:4000 (http)
Request: POST /api/users/sign-out
** (exit) an exception was raised:
    ** (RuntimeError) expected action/2 to return a Plug.Conn, all plugs must receive a connection (conn) and return a connection
        (api_trangell) lib/api_trangell_web/controllers/page_controller.ex:5: ApiTrangellWeb.PageController.phoenix_controller_pipeline/2
        (api_trangell) lib/api_trangell_web/endpoint.ex:1: ApiTrangellWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (api_trangell) lib/api_trangell_web/endpoint.ex:1: ApiTrangellWeb.Endpoint.plug_builder_call/2
        (api_trangell) lib/plug/debugger.ex:99: ApiTrangellWeb.Endpoint."call (overridable 3)"/2
        (api_trangell) lib/api_trangell_web/endpoint.ex:1: ApiTrangellWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Applications/MAMP/htdocs/elixir-ex-source/api_trangell/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

#53

بسیار خب، من شاید امروز صبح بتونم یک تست بکنم، فقط اگر میشه یک راهنمایی که چطوری با plug ساده توی الیکسر یا Phoenix این مشکل رو بوجود بیارم (reproduce).
۱- آیا وقتی از این کتابخونه توی اپ Phoenix تک سروری هم استفاده میکنی این مشکل وجود داره؟
۲- مراحلی که توکن طی میکنه از اپ تا اپ دقیقا چیه


#54

ممنون توماج جان اون ور داره صبح می شه :grin: این ور داره خیلی شب می شه.

ولاه من نمی دونم چیجوری این مشکل پیش می یاد ولی من اومدم کل کارامو کامیت کردم

اول یک درخواست پست باید به این لینک بفرستید
http://localhost:4000/api/users/sign-in

که شامل “password”: “2” باشه که برای شما توکن بسازه بعد توکن دستی بگیرید و بیارید

یک درخواست پست بفرستید به

http://localhost:4000/api/users/sign-out

که تو هدرش Authorization با ارزش Bearer MYTOKEN بفرستید .


واقعیت امر من اصلا به چند سرور فکر نکردم من فعلنه فقط روی یک سرور دارم تست می کنم . در کل

۱. توکن بسازم
۲. توکن ورفای کنم
۳. توکن رو از بین ببرم

تابعشم اینه

	def sign_out(conn, _params) do
		 conn
		 |> ApiTrangell.Guardian.Plug.sign_out()
		 |> send_resp(204, "")
	end

که مشکل اینکه از پایپل لاین من رد نمی شه تا به این تابع برسه


#55

عالیه،
راستی از postman استفاده کردی تا حالا؟ شاید برای تست api و auth خیلی بکار بیاد. اگر نمیدونی از AppStore نصب کن. نیازی به خریدش نیست نسخه رایگانش کامله


#56

راستی درخواست سی یو آر الش

curl -H "Authorization: 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhcGlfdHJhbmdlbGwiLCJleHAiOjE1Nzk2MTIzODcsImlhdCI6MTUxOTczNzE4NywiaXNzIjoiYXBpX3RyYW5nZWxsIiwianRpIjoiMmNiZmI0NGQtM2Y1Yy00YzAzLWE5YWQtNmRjZjRmZmY3NjY0IiwibmJmIjoxNTE5NzM3MTg2LCJzb21lIjoiY2xhaW0iLCJzdWIiOiIxIiwidHlwIjoiYWNjZXNzIn0.1IXxsdB4DDoCkMPuHqy6YHD4eA63SNv6l4NXzYs9JXaskj7Kggkjg21C_T8N-gK9Vzy38Z--63nnZ__Zt2l65w'" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost:4000/api/users/sign-out

آره توماج جان همزمان هم از ترمینال هم از پست من و هم از اپ خیلی بهتر از همشون Rested استفاده می کنم تو اپ استوره رایگانه و کم حجم خیلی تمیز کوچیک استفاده می کنم ولی مشکلم از یک جای دیگه هست نمی دونم چییه . @samdvr عزیز هم داره تست می کنه امید وارم حل بشه . شاخ شده :sweat_smile:


#57

Rested و نمیدونستم، باید ببینم چیه ممنون


#58

قربانت توماج جان

اینم لینکش هست. فکر کنم فقط برای مک زده باشند


#59

اوکی، سام پیداش میکنه حتما :wink:


#60

curl -X POST \
  http://localhost:4000/api/users/sign-out \
  -H 'authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhcGlfdHJhbmdlbGwiLCJleHAiOjE1Nzk2NjEyNjksImlhdCI6MTUxOTc4NjA2OSwiaXNzIjoiYXBpX3RyYW5nZWxsIiwianRpIjoiYjNiMzQ5MmYtNTgxNS00ZDNiLTg4OWItNjI5N2U0MTQ3ZjVkIiwibmJmIjoxNTE5Nzg2MDY4LCJzb21lIjoiY2xhaW0iLCJzdWIiOiIxIiwidHlwIjoiYWNjZXNzIn0.Fc0ixTL5Dwi0mQvC074oKNG6KXT-SelgrpMUShPxMUQ1dY_nAHYbw1vyIZmXs3z4V3UkDUfU_4w6rHRuFTE_KA'

من اینو استفاده کردم با آخرین commit شما درست کار کرد


#61

درود سام عزیز . خیلی خیلی خیلی ممنونم . یک سوتی ریز هم دادم :wink: من این ارور HTTP/1.1 204 No Content رو می دیدم فکر می کردم کدم مشکل داره :grin: نگو که خودم اینجا |> send_resp(204, "") رو قرار داده بودم .

یک موردی هست اینکه : هر دفعه به این تابع ما درخواست بدیم ارور ۲۰۴ رو نمایش می ده ولی نمی گه اصلا سشن نگه داشته ؟ یا وجود داره یا نه همین توکن بازم ارسال می کنی بازم همین نتیجه هست ؟ به نظرتون مشکلی در اینجا نیست؟

۱. اومد یک نفر رباطی ران کردن روی api پابلیک من و پشت هم پیغام ارسال کرد ؟ چون کد کپچا نداریم در api و همینطور CSRF چه کاری می شه کرد برای جلوگیری از این موضوع فکر کنیم هنوز توکن نداریم می خوایم توکن بسازیم طرف می خواد خیلی پسورد چک کنه تا به هدفش برسه :

  • آیپی طرف بگیریم بعد از چند درخواست مشکوک به اون زمان دیگیری رو پیشنهاد کنیم؟
  • یک تایم بین ارسال مشخص کنیم تا نتونه تعداد زیادی حملات رو شکل بده؟
  • چون اینجا سشن نداریم چه کاری باید کرد ؟ منظور از نظر امنیت بیشتر هست.

آیا نیاز هست علاوه بر https روی سایت کاربر دوباره متن خود را از سیستمش رمزگذاری شده ارسال کند به سرور ؟ اگر بله چطور باید عمل کنم ؟ به صورت مثال اطلاعات کاربر رو بر اساس توکنش کد کنم در موقع ارسال برای این چه راهی پیشنهاد می دید؟

و آخرین مشکل متاسفانه من هنوز نتونستم مورد زیر رو پیاده کنم

با تشکر