View Full Version : امنیت در سرویس JAX-WS
ali-baba
یک شنبه 03 خرداد 1394, 14:18 عصر
سلام و خسته نباشید
راستش می خوام یه برنامه با soap نوشتم... حالا می خوام که قبل از اینکه کاربر بتونه با برنامه تحت سرویس کار کنه.... قبلش از طریق username و password کاربر مورد نظر رو بررسی کنم و اگه تونست احراز هویت کنه بهش اجازه دسترسی به توابع رو بدم...
راستش دارم این کار رو با java و main انجا میدم... یعنی سرور ندارم و یه اپلیکیشن ساده نوشتم... مثل این سایت (http://www.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/)...
حالا کسی می تونه بهم کمک کنه که باید چیکار کنم؟
از این هم (http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/) استفاده کردم... ولی به دردم نخورد چون فقط یه بررسی الکی بود...
یه جا نوشته بود که باید از
public class MyAuthenticator extends Authenticator {
private String user;
private String password;
public MyAuthenticator(String user,String password) {
this.user = user;
this.password = password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
PasswordAuthentication auth = new PasswordAuthentication(user,password.toCharArray() );
return auth;
}
}
استفاده کنی... که نفهمیدم چطوری باید روی پروژه ام اعمالش کنم...
ممنون میشم حتی شده راهنمایی کنید...
باتشکر...
ahmad.mo74
یک شنبه 03 خرداد 1394, 16:40 عصر
سلام، تو این مثال به خوبی توضیح داده :
http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/
ali-baba
دوشنبه 04 خرداد 1394, 08:12 صبح
سلام...
من این رو دیدم..
ولی وقتی با یه سری توابع قاتیش می کنم دیگه بهم جواب نمیده...
نمی دونم منظورم رو متوجه شدید یا نه... ولی می خوام وقتی که یوزر و پسورد درست بود بتونه با سرویس کار کنه.. نه قبل یا در حین این کار...
من می خوام بدونم مثلا برای همین چیزی که شما ارائه کردید... چطور باید با دیگر توابع قاتی اش کنم...
باتشکر...
ahmad.mo74
سه شنبه 05 خرداد 1394, 12:41 عصر
سلام
راستش متوجه منظورت نشدم :|
ali-baba
سه شنبه 05 خرداد 1394, 13:22 عصر
سلام...
ببین... راستش می خوام هر کسی که بخواد با وب سرویس من کار کنه.. اول به وسیله یوزر نیم و پسورد صلاحیتش چک بشه... بعد بهش اجازه دسترسی به همون وی سرویس رو بدم...
یعنی مثلا ... وب سرویس من... روی این آدرس کار می کنه... http://localhost:9999/ws/hello?wsdl
در خواست ها رو می گیره و جواب میده...
حالا می خوام قبل از اینکه به کسی جواب بده... اول ... یوزر نیم و پسورد رو به وسیله همین وب سرویس بگیره از کاربر... بعد که بررسی شد بهش اجازه یا عدم اجازه دسترسی به وب سرویس رو بده...
کلا یه جورایی روی Header وب سرویس بیاد قرار بگیره و نذاره هر کسی بهش وصل بشه و باهاش کار کنه...
باتشکر...
ahmad.mo74
سه شنبه 05 خرداد 1394, 13:33 عصر
خب اون لینکی که دادم هم دقیقا همینکارو کرده.
یعنی وقتی کاربری درخواستی فرستاد از توی http header ها username و password رو چک میکنه.
اگر username و password توی header وجود داشت، صحتشون رو چک میکنی و بعد به کاربر جوابشو میدی... اگر هم وجود نداشت که یا جوابشو نمیدی یا کلا بلاکش میکنی ...
یعنی تو این قسمت :
if (username.equals("mkyong") && password.equals("password")) {
return "Hello World JAX-WS - Valid User!";
} else {
return "Unknown User!";
}
و کار دیگه ای هم که میشه کرد اینه که کاربری که authenticate شد دیگه مجدد user pass اش چک نشه...
ahmad.mo74
سه شنبه 05 خرداد 1394, 13:47 عصر
این لینک هم ببین :
http://examples.javacodegeeks.com/enterprise-java/jws/application-authentication-with-jax-ws/
که اینم کاری شبیه لینک قبلی رو انجام داده.
omidbizdotcom
چهارشنبه 06 خرداد 1394, 09:43 صبح
یه کلاس ایجاد کن بصورت زیر
package org.webservice;
public class SOAPRequestHandler implements SOAPHandler
{
public boolean handleMessage(MessageContext msgContext)
{
HttpServletRequest request = (HttpServletRequest) messageContext.get(MessageContext.SERVLET_REQUEST) ;
//alan request o inja dary authenticvation ro anjam bede agar ok bood true bargardun agar na false
}
}
بعد یه فایل تو META-INF پروژه میسازی بنام standard-jaxws-endpoint-config.xml
<jaxws-config xmlns="urn:jboss:jaxws-config:2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="urn:jboss:jaxws-config:2.0 jaxws-config_2_0.xsd">
<endpoint-config>
<config-name>WebService Endpoint</config-name>
<pre-handler-chains>
<javaee:handler-chain>
<javaee:protocol-bindings>##SOAP11_HTTP</javaee:protocol-bindings>
<javaee:handler>
<javaee:handler-name>SOAP Request Handler</javaee:handler-name>
<javaee:handler-class>org.webservice.SOAPRequestHandler</javaee:handler-class>
</javaee:handler>
</javaee:handler-chain>
</pre-handler-chains>
</endpoint-config>
</jaxws-config>
ali-baba
چهارشنبه 06 خرداد 1394, 12:12 عصر
سلام...
اون لینکی که دادی کاملا درست و به جا بود... و البته مفید... که نکات خوبی هم داشت...
ولی من می خوام این بررسی یوزر و پسورد رو در قسمت هدر انجام بدم...
من خودم از این لینک (http://examples.javacodegeeks.com/enterprise-java/jws/jax-ws-soap-handler-example/)کمک گرفتم... ولی موندم چطوری 2 تا مقدار رو پاس بدم و از اون طرف دریافتش کنم...
باتشکر...
ali-baba
چهارشنبه 06 خرداد 1394, 12:15 عصر
یه کلاس ایجاد کن بصورت زیر
package org.webservice;
public class SOAPRequestHandler implements SOAPHandler
{
public boolean handleMessage(MessageContext msgContext)
{
HttpServletRequest request = (HttpServletRequest) messageContext.get(MessageContext.SERVLET_REQUEST) ;
//alan request o inja dary authenticvation ro anjam bede agar ok bood true bargardun agar na false
}
}
بعد یه فایل تو META-INF پروژه میسازی بنام standard-jaxws-endpoint-config.xml
<jaxws-config xmlns="urn:jboss:jaxws-config:2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="urn:jboss:jaxws-config:2.0 jaxws-config_2_0.xsd">
<endpoint-config>
<config-name>WebService Endpoint</config-name>
<pre-handler-chains>
<javaee:handler-chain>
<javaee:protocol-bindings>##SOAP11_HTTP</javaee:protocol-bindings>
<javaee:handler>
<javaee:handler-name>SOAP Request Handler</javaee:handler-name>
<javaee:handler-class>org.webservice.SOAPRequestHandler</javaee:handler-class>
</javaee:handler>
</javaee:handler-chain>
</pre-handler-chains>
</endpoint-config>
</jaxws-config>
سلام و خسته نباشید
راستش فعلا دارم به صورت توابع main سرویس رو بالا میارم... تا به مشکلات اپلیکشین سرور ها بر نخورم... ولی بعدا حتما این سرویس ها رو روی اپلیکیشن سرور ها هم بالا خواهم آورد... و البته یه وبلاگ میزنم و توش هم پروژه های نمونه و هم توضیحات کامل رو میذارم... اینطوری به نظرم بهتره...
ولی چون فعلا تویه مرحله یاد گیری هستم.. فقط می خوام سریع جلو برم...
بازم از اینکه جواب دادی کمال تشکر رو ازت دارم... خیلی دستت درد نکنه..
باتشکر..
ali-baba
دوشنبه 11 خرداد 1394, 09:04 صبح
آقایان سلام و خسته نباشید...
می خواستم بپرسم...
این نحوه پیاده سازی امنیت در وب سرویس تا چه حد قابل اطمینان هستش؟؟؟
یعنی امکان هک در اون چقدر وجود داره...
آیا یوزر و پسورد به صورت clear text فرستاده میشه یا اینکه رمزنگاری میشه؟؟؟
کلا یوزر نیم و پسورد رو تویه هدر بذاریم بهتره یا به این صورتی که تویه این لینک وجود داره؟؟؟
و اینکه کلا برای اینکه بتونیم امنیت رو تا حد ممکن بالا ببریم چه کارهایی میشه کرد؟
باتشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.